一、SQLite是什么
SQLite是专门为嵌入式设备设计的一款轻量级数据库。
如何使用SQLite
- 创建数据库和数据表;
- 添加数据;
- 修改数据 ;
- 删除数据 ;
- 查询数据 。
二、SQLite创建数据库和数据表的结构
- 新建类继承SQLiteOpenHelper;
- 实现构造方法;
- 重写OnCreate方法;
- 实例化SQLiteOPenHelper的子类对象;
调用getReadatebase方式或getWritableDatabase方法
SQLiteOpenHelper
SQLiteOpenHelper是一个数据库与辅助类,是一个抽象类,子类需要重写Oncreate和Onupgrade方法,并添加一个构造方法。
SQLiteOpenHelper
父类中为提供默认构造方法,,必须显示调用父类的构造方法;
需要传递创建的数据名称及数据库版本号。
构造方法参数:
public DBhepler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
Context context:上下文环境;
String name:数据库名;
CursorFactory factory:允许开发者查询数据时返回一个自定义curcor,一般为null;
int version:当前数据库的版本号。
Oncreate方法
- 在第一次创建执行时只会执行一次;
- 在此方法中使用标准的SQL语句创建;
- Oncreate方法中有一个SQLiteDataBAse对象参数,通过调用execSQL方法执行建表SQL语句。
Onupgrade方法
- 升级数据库结构时触发;
- 当需要增加表字段或者增加表时,传来一个新的数据库版本号;
重新更新现有数据库。
SQLDatabase方法
SQLiteOpenHelper子类对象:
实例化 SQLiteOpenHelper子类对象,创建数据库和数据库表;
SQLDatabase子类对象:
数据库操作对象,用来连接数据库并可以对数据进行增删改查;
getWritableDatabase方法:
以读写方式打开数据库,返回可读写的SQLDatabase对象,一般在增删改插时用;
getReadableDatabase方法:
以只读方式打开数据库,返回只读的SQLDatabase对象,一般查询时用得到。
三、代码演示:
在Student表中插入数据
//插入数据
case R.id.sql_btn1:
sql = dBhepler.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", text.getText().toString());
sql.insert("Student", null, values);
break;
在Student表中查询数据
case R.id.sql_btn2:
//得到数据库对象
sql = dBhepler.getReadableDatabase();
//创建游标
Cursor cursor = sql.query("Student", null, null, null, null, null, null);
//游标置顶
cursor.moveToFirst();
do {
//遍历
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.e("ndien", name);
} while (cursor.moveToNext());
//关闭游标
cursor.close();
break;
在Student表中修改数据
//修改
case R.id.sql_btn3:
String name=text.getText().toString();
String newName=text1.getText().toString();
sql = dBhepler.getWritableDatabase();
ContentValues values1=new ContentValues();
values1.put("name",newName);
//第三个参数是查询条件
//第四个参数是要修改的值
sql.update("Student",values1,"name=? and id>?",new String[]{name,"6"});
break;
在Student表中删除数据
case R.id.sql_btn4:
sql = dBhepler.getWritableDatabase();
String name1=text.getText().toString();
sql.delete("Student","name=?",new String[]{name1});
break;
整体代码
DBhepler代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn1;
private Button btn2;
private Button btn3;
private Button btn4;
private EditText text;
private EditText text1;
private DBhepler dBhepler;
private SQLiteDatabase sql;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = findViewById(R.id.sql_btn1);
btn2 = findViewById(R.id.sql_btn2);
btn3 = findViewById(R.id.sql_btn3);
btn4 = findViewById(R.id.sql_btn4);
text = findViewById(R.id.sql_text);
text1 = findViewById(R.id.sql_text1);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
dBhepler = new DBhepler(this, "demodb", null, 1);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
//插入数据
case R.id.sql_btn1:
sql = dBhepler.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", text.getText().toString());
sql.insert("Student", null, values);
break;
case R.id.sql_btn2:
//查询信息
//得到数据库对象
sql = dBhepler.getReadableDatabase();
//创建游标
Cursor cursor = sql.query("Student", null, null, null, null, null, null);
//游标置顶
cursor.moveToFirst();
do {
//遍历
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.e("ndien", name);
} while (cursor.moveToNext());
//关闭游标
cursor.close();
break;
//修改
case R.id.sql_btn3:
String name=text.getText().toString();
String newName=text1.getText().toString();
sql = dBhepler.getWritableDatabase();
ContentValues values1=new ContentValues();
values1.put("name",newName);
//第三个参数是查询条件
//第四个参数是要修改的值
sql.update("Student",values1,"name=? and id>?",new String[]{name,"6"});
break;
case R.id.sql_btn4:
sql = dBhepler.getWritableDatabase();
String name1=text.getText().toString();
sql.delete("Student","name=?",new String[]{name1});
break;
}
}
}
xml布局:
<Button
android:textSize="20sp"
android:text="插入"
android:id="@+id/sql_btn1"
android:layout_width="120dp"
android:layout_height="80dp" />
<Button
android:text="查询"
android:textSize="20sp"
android:id="@+id/sql_btn2"
android:layout_width="120dp"
android:layout_height="80dp" />
<Button
android:text="修改"
android:textSize="20sp"
android:id="@+id/sql_btn3"
android:layout_width="120dp"
android:layout_height="80dp" />
<Button
android:text="删除"
android:textSize="20sp"
android:id="@+id/sql_btn4"
android:layout_width="120dp"
android:layout_height="80dp" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/sql_text"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/sql_text1"
/>