Lec 13
- 2. SQLite. 丼仂 亠弍亠?
仗亳舒仆亳亠 仄仂亟亠仍亠亶 亳 仗仂亠从亳仂于舒仆亳亠 弍舒亰
亟舒仆仆 仆舒 亳 仂仆仂于亠
仗亳舒仆亳亠 从仍舒仂于 亟仍 仗舒于仍亠仆亳 亟舒仆仆仄亳
于 弍舒亰亠
亳于磶从舒 亟舒仆仆 从 仗亠亟舒于仍亠仆亳
(仗仂仍亰仂于舒亠仍从仂仄 亳仆亠亠亶)
- 4. SQLiteDatabase. 亠仂亟.
void execSQL(String sql) // 于仗仂仍仆亠仆亳亠 sql-亰舒仗仂舒, 从仂仂亶 仆亠 磦仍磳
于弍仂从仂亶 (.亠. 弍亠亰 select). 亅仂 CREATE TABLE, INSERT, DELETE 亳 舒从
亟舒仍亠亠.
Cursor query(String table, String[] columns, String selection, String[]
selectionArgs, String groupBy, String having, String orderBy, String limit) //
于舒亢仆亶 仄亠仂亟. 仗仂仍亰亠 亟仍 于弍仂从亳.
Cursor rawQuery(String sql, String[] selectionArgs) // 仂弍仆亶 sql-亰舒仗仂.
- 5. 亠仂亟.
insert() // 于仂亰于舒舒亠 id 于舒于仍亠仆仆仂亶 仂从亳
update() // 于仂亰于舒舒亠 从仂仍亳亠于仂 仂弍仆仂于仍亠仆仆
仂从
replace() // 亰舒仄亠仆舒 (亠亟从仂 亳仗仂仍亰仂于舒仍)
delete() // 于仂亰于舒舒亠 从仂仍亳亠于仂 亟舒仍亠仆仆 仂从
- 7. 亠仂亟. 丐舒仆亰舒从亳.
beginTransaction() // 仆舒舒仍仂
endTransaction() // 从仂仆亠
inTransaction() // true, 亠仍亳 仂从舒 舒仆亰舒从亳
setTransactionSuccessful() // 仂仍从仂 仗仂仍亠 于亰仂于舒
仂亞仂 仄亠仂亟舒 舒仆亰舒从亳 弍亟亠 亰舒从仂仄亳亠仆舒.
- 8. 弌仂亰亟舒仆亳亠. 弌仗仂仂弍 1.
static SQLiteDatabase openDatabase(String path,
SQLiteDatabase.CursorFactory factory, int flags)
//亳仄亠
SQLiteDatabase mDatabase =
SQLiteDatabase.openDatabase("/data/data/com.example.app/datab
ases/my.db", null, SQLiteDatabase.CREATE_IF_NECESSARY);
- 9. 弌仗仂仂弍 1. 舒舒仄亠.
path // 仗 从 舒亶仍 弍舒亰 亟舒仆仆. 亟仍 仍ミ頴笑 弍舒亰 亟舒仆仆 亳仄亠亠 于亳亟:
束/data/data/<package_name>/databases. <package_name> 亳仄 仗舒从亠舒, 从仂仂仂亠 于
从舒亰于舒仍亳 仗亳 仂亰亟舒仆亳亳 仗仂亠从舒.
factory // 仂 仄仂仍舒仆亳 仂亳 null.
flags // 仍舒亞亳 亳仍亳 从仂仆舒仆, 仂仗亠亟亠仍亠仆仆亠 于仆亳 从仍舒舒 SQLiteDatabase.
于亠亞仂 亠亠: CREATE_IF_NECESSARY (仂亰亟舒于舒 弍舒亰, 亠仍亳 仂 仆亢仆仂),
OPEN_READONLY (仂从 仂仍从仂 亟仍 亠仆亳), OPEN_READWRITE (亳舒 亳
仗亳舒), NO_LOCALIZED_COLLATORS (仂从 弍亠亰 仗仂亟亟亠亢从亳 仍仂从舒仍亳亰舒亳亳)
- 11. 弌仗仂仂弍 2. 舒舒仄亠.
name // 亳仄 弍舒亰 亟舒仆仆, 仆亳从舒仍仆仂亠 于 舒仄从舒 仗亳仍仂亢亠仆亳
mode // 从仂仆舒仆舒, 亟仍 从舒亰舒仆亳 亠亢亳仄舒 (MODE_PRIVATE
亳仍亳 0 仗仂 仄仂仍舒仆亳, MODE_WORLD_READABLE 亟仍
亠仆亳, MODE_WORLD_WRITEABLE 亟仍 亰舒仗亳亳)
factory // 仗仂从舒 仆亠 仂亞舒亠仄, 舒于亳仄 null
- 12. 弌仗仂仂弍 2. 亠仂亟.
boolean deleteDatabase(String name) // 亟舒仍磳 弍舒亰
仗仂 亳仄亠仆亳. True, 亠仍亳 亰舒于亠亳仍仂 仗亠仆仂.
File getDatabasePath(String name) // 于仂亰于舒舒亠
舒弍仂仍ム仆亶 仗 仗仂 亳仄亠仆亳 弍舒亰
- 14. 弌仗仂仂弍 3. 亠仂亟.
void close() // 亰舒从 于亠 仂从亠 仂亠亟亳仆亠仆亳
SQLiteDatabase getReadableDatabase() //
于仂亰于舒舒亠 弍舒亰 亟仍 亠仆亳
SQLiteDatabase getWritableDatabase() // 弍舒亰舒 亟仍
亠仆亳 亳 亰舒仗亳亳
onOpen(SQLiteDatabase db) // 于亰于舒亠 仗仂仍亠
仂亞仂, 从舒从 弍舒亰舒 弍亟亠 仂从舒
- 15. 弌仗仂仂弍 3. 亠仂亟.
onCreate(SQLiteDatabase db) // 于亰于舒亠 仗仂仍亠
仂亞仂, 从舒从 弍舒亰舒 仂亰亟舒仆舒 于 仗亠于亶 舒亰. 亟亠
仂亰亟舒ム 仆亠仂弍仂亟亳仄亠 舒弍仍亳.
onUpgrade(SQLiteDatabase db) // 于亰于舒亠,
从仂亞亟舒 弍舒亰亠 仆亢亠仆 舒仗亞亠亶亟. 亟亠 亟舒仍ム
舒弍仍亳, 仂亰亟舒ム 仆仂于亠, 亟仂弍舒于仍ム 仗仂仍 亳
舒从 亟舒仍亠亠.
- 17. 弌仗仂仂弍 3. 舒舒仄亠.
context // 从仂仆亠从 仗亳仍仂亢亠仆亳. 仄亠仆仆仂 亠亠亰 亠亞仂 仄亠仂亟
openOrCreateDatabase() 亳 舒弍仂舒亠 SQLiteOpenHelper
name // 亳仄 弍舒亰
factory // null
version // 于亠亳 弍舒亰. 仗仂仍亰亠, 从仂亞亟舒 亠仄 弍舒亰
亟舒仆仆 仆亢仆仂 仂弍仆仂于亳.
- 18. 弌仗仂仂弍 3.
class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "data";
private static final String DATABASE_CREATE = "create table test_table (_id integer primary key
autoincrement, some_test text not null);";
DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override
public void onCreate(SQLiteDatabase db) { db.execSQL(DATABASE_CREATE); }
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS notes");
onCreate(db);
}
}
- 19. 弌仗仂仂弍 3.
// 仂仍亠仆亳亠 弍舒亰
DatabaseHelper mDbHelper = new DatabaseHelper(mCtx);
SQLiteDatabase mDb = mDbHelper.getWritableDatabase();
- 20. 仂弍仍亠仄
database is locked // 于仂亰仆亳从舒亠 仗亳 仄仆仂亞仂仗仂仂仆仂亶 亰舒仗亳亳 于 弍舒亰.
database is closed // 仄仂亢亠 于仂亰仆亳从仆 仗亳 舒弍仂亠 弍舒亰仂亶 亳亰 舒亰仆
舒亠亶 仗仂亞舒仄仄, 仆舒仗亳仄亠, Activity 亳 Service.
corrupted database // 于仂亰仆亳从舒亠, 亠仍亳 舒亶仍 弍舒亰 亟舒仆仆 弍仍 亳仗仂亠仆
仍亳弍仂 仗仂仍亰仂于舒亠仍亠仄, 仍亳弍仂 仗亳 仆亠仂亢亳亟舒仆仆仂仄 仗亠于舒仆亳亳 亰舒仗亳亳 于 弍舒亰
(于从仍ム亠仆亳亠 亠仍亠仂仆舒, 仂亳弍从舒 OS, 仆亠于舒从舒 仗仂舒仆于舒, 弍亳亠
亠从仂舒 仆舒 SD 从舒亠 亳 .亟.)
仆亳亰从舒 仗仂亳亰于仂亟亳亠仍仆仂 仗亳 舒弍仂亠 弍舒亰仂亶 亟舒仆仆 // 仄仂亢亠
于仂亰仆亳从仆 亳亰-亰舒 于仆亠仆仆亳 弍仍仂从亳仂于仂从, 从仂仆从亳ム亳 舒仆亰舒从亳,
于仂从仂仄 仂于仆亠 亢仆舒仍亳仂于舒仆亳, 仂于亳亳 仗舒从亠仆仂亶 仂弍舒弍仂从亳.