android存储-sqlite

来源:互联网 发布:网络规划与设计题库 编辑:程序博客网 时间:2024/06/06 14:23
sqlite是安卓内置的轻量级关系型数据库,它支持sql语句,适合存储大量复杂数据。
SQLiteOpenHelper抽象类用于创建和升级数据库,我们可以创建一个类去继承它,重写两个方法
@Override
public void onCreate(SQLiteDatabase db) {
//创建数据库
db.execSQL("这里可以写sql语句,比如创建一个表");
}
//升级
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//当构造方法出的version变大时会自动调此方法
//每次升级数据库只需更改sql和case,不加break
switch(oldVersion){
case 1:
db.execSQL("");
case 2:
db.execSQL("");
default:
}
}
public MyDatabaseHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
SQLiteOpenHelper对象创建或打开数据库可以用getReadableDatabase或getWriteableDatabase,若数据库不
存在则会创建,这两种方法返回的对象都可读写,区别在于当数据库不可写入时getWriteableDatabase会
抛异常,而getReadableDatabase则会以只读的方式打开数据库
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this, "my.db", null, 1);
dbHelper.getWritableDatabase();
接下来就是增删改查操作了,和contentProvider很像
增:ContentValues values = new ContentValues();
values.put("name", "aaa");
db.insert("my", null, values);
改:ContentValues values = new ContentValues();
values.put("name", "bbb");
db.update("my", values, "name=?", new String[]{"aaa"});
删:db.delete(table, whereClause, whereArgs)
查:Cursor cursor = db.query("my",null,null,null,null,null,null,null);
//db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
if(cursor.moveToFirst()){
do{
String name = cursor.getString(cursor.getColumnIndex("name"));
} while(cursor.moveToNext());
}
cursor.close();
0 0
原创粉丝点击