1.SharedPreferences是以XML形式存储数据的,只适合存储基本数据类型的数据。
2.文件存储的内容在提取〈解析)数据时,相对复杂。
3.当数据量大、结构复杂时,如果使用SharedPreferences和文件存储对的数据的操作变得非常复杂,容易出错,效率低下,Android中提
到的SQLite数据存储,帮助我们解决这些问题。
使用SQLite创建数据库和表,首先要创建一个类继承SQLiteOpenHelper,并且实现它的方法
private Context context;
//sql建表语句
private static final String TABLE_PRODUOT = "create table Student(" +
"id integer primary key autoincrement," +
"name text," +
"age integer)";
public SQLTest(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
//建表
db.execSQL(TABLE_PRODUOT);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
SQLTest sql = new SQLTest(this, “Student.db”, null, 1);
获取一下数据库对象,以便下面使用
SQLiteDatabase db = sql.getWritableDatabase();
private void insert() {
String name = nameEdit.getText().toString();
//获得SQLiteDatabase对象,读写模式
sqldb = dbhelper.getWritableDatabase();
//ContentValues类似HashMap,区别是ContentValues只能存简单数据类型,不能存对象
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age", 20);
values.put("gender", "男");
//执行插入操作
sqldb.insert(TABLE_NAME, null, values);
}
private void delete() {
sqldb = dbhelper.getWritableDatabase();
//第二个参数是WHERE语句(即执行条件,删除哪条数据)
//第三个参数是WHERE语句中占位符(即"?"号)的填充值
sqldb.delete(TABLE_NAME, "name=?", new String[]{"jack"});//删除name的值是jack的那条记录
}
private void modify() {
SQLiteDatabase sqldb = dbhelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "Jet");
//第二个参数是修改的字段及修改的值(已经存放到ContentValues中)
//第三个参数是WHERE语句
//第四个参数是WHERE语句中占位符的填充值
//如果第三四个参数为null,那就将每条记录都改掉
sqldb.update(TABLE_NAME, values, null, null);
}
private void show() {
//得到数据库对象
sqldb = dbhelper.getReadableDatabase();
//创建游标
Cursor mCursor = sqldb.query(TABLE_NAME, new String[] { "id", "name", "age", "gender" }, "age>?", new String[]{"10"}, null, null,
null);
//游标置顶
mCursor.moveToFirst();
//遍历
do{
String name = mCursor.getString(mCursor.getColumnIndex("name"));
System.out.println(name);
}while(mCursor.moveToNext());
}