Android SQLite使用注意点。
SQLiteDatabase db
对象,在写入数据时要先执行
db.beginTransaction();
如果要commit
,则执行
db.setTransactionSuccessful();
db.endTransaction();
如果要rollback
,则执行
db.endTransaction();
完了之后要关闭数据库
db.close();
特别注意的是这两句
db.endTransaction();
db.close();
不管写入成功还是失败都是要执行的,不然会报错数据库is locked
示例写法
SoftwareHelper softwareHelper = new SoftwareHelper(getApplicationContext());
SQLiteDatabase db = softwareHelper.getWritableDatabase();
try{
db.beginTransaction();
ContentValues contentValues = new ContentValues();
contentValues.put("id", 3);
contentValues.put("name", "米乐");
contentValues.put("package_name", "douyins");
contentValues.put("is_enable", 1);
contentValues.put("version", "1.0.1");
db.insertOrThrow(softwareHelper.TABLE_NAME, null, contentValues);
db.setTransactionSuccessful();
db.endTransaction();
db.close();
Log.d("info", "data write ok");
}catch (Exception e){
Log.d("EXCEPTION", e.getMessage());
}finally {
db.endTransaction();
db.close();
}