1.为什么要用SQLite
通常我们是用到两种方法对数据进行存储:
SharedPreferences和SQLite
但是SharedPreferences存储的内容在提取和解析数据时,相对复杂,当数据量大,结构复杂时,如果使用SharedPreferences和文件存储对数据的操作将变得非常复杂,容易出错,效率低下,而SQLite处理数据量大,数据结构复杂就很方便了
2.什么是SQLite
①SQLite数据库存储是Android系统提供的数据存储方式之一
②SQLite是专为嵌入式设备设计的一款轻量级数据库
③SQLite占用资源非常低,在嵌入式设备中,只需要几百K的内存
④SQLite支持标准的SQL语法,遵循数据库的ACID事物
⑤SQLite不需要安装,不需要用户名密码就可以使用
3.如何创建数据库和数据表
创建数据库步骤如下:
①新建类继承SQLiteOpenHelper
②实现其构造方法
③重写OnCreat方法
④重写onUpdate方法
⑤实例化SQLiteOpenHelper的子类对象
⑥调用getReadableDatabase方法或getWriteableDatabase方法
创建数据表:
SQL建表语句:
create table 表名(
列名 列类型 是否可空,
列名 列类型 是否可空,
…);
private String sql="create table student(" +
"id integer primary key autoincrement not null," +
"name text," +
"age integer" +
")";
这里要注意的是在其内,int对应的是integer,String对应的是text,float对应的是real,主键则是代码段中的primary key
而自增长则是 autoincrement;
4.如何添加数据
private void addStudent() {
String name = nameET.getText().toString();
int age = Integer.parseInt(ageET.getText().toString());
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age", age);
MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();
sqLiteDatabase.insert("student", null, values);
}
首先按照上面所说的步骤创建mySqliteHelper对象,里面四个参数分别是:当前类,数据库名,,版本号;
再用ContentValues传入你添加的值到values中去,然后通过mySqliteHelper调用getWritableDatabase();方法进行读取,最后将参数通过insert方法加进去,这样就加入到了数据库中
5.如何查询数据
private void listStudent() {
MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();
Cursor cursor = sqLiteDatabase.query("student", null, null, null, null, null, null);
cursor.moveToFirst();
do {
id = cursor.getInt(cursor.getColumnIndex("id"));
name = cursor.getString(cursor.getColumnIndex("name"));
age = cursor.getInt(cursor.getColumnIndex("age"));
} while (cursor.moveToNext());
}
查询里面用到了一个cursor,就是通过dowhile循环读取游标的方法来一个一个查询出来,里面用到了sqLiteDatabase.query方法,里面的参数第一个是数据表名,后面六个null,通过这个方法查询出来
6.如何删除数据
private void delStudent() {
String name = nameET.getText().toString();
String age = ageET.getText().toString();
MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();
sqLiteDatabase.delete("student", "name=? and age=?", new String[]{name, age});
}
这里用到的是sqLiteDatabase.delete方法,第一个参数是数据表名,第二个参数是删除的条件,第三个是讲其放到一个数组中去,最后进行删除
7.如何修改数据
private void modifyStudent() {
String name = nameET.getText().toString();
String age = ageET.getText().toString();
MySqliteHelper mySqliteHelper = new MySqliteHelper(this, "student_db", null, 1);
SQLiteDatabase sqLiteDatabase = mySqliteHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "BBB");
//第三个参数----修改条件
//第四个参数----占位符填充值
sqLiteDatabase.update("student", values, "name=? and age=?", new String[]{name, age});
}
而修改用到的是sqLiteDatabase.update方法,这个方法和删除中的参数是一样的