際際滷

際際滷Share a Scribd company logo
 仗仂 Java/Android
舒仆亳亠 13
仍亠从舒仆亟 亳仆
e-mail: alexandr.rusin@gmail.com
Android Developer
SQLite. 丼仂 亠弍亠?

仗亳舒仆亳亠 仄仂亟亠仍亠亶 亳 仗仂亠从亳仂于舒仆亳亠 弍舒亰
亟舒仆仆 仆舒 亳 仂仆仂于亠

仗亳舒仆亳亠 从仍舒仂于 亟仍 仗舒于仍亠仆亳 亟舒仆仆仄亳
于 弍舒亰亠

亳于磶从舒 亟舒仆仆 从 仗亠亟舒于仍亠仆亳
(仗仂仍亰仂于舒亠仍从仂仄 亳仆亠亠亶)
亠舒亳
java.lang.Object
android.database.sqlite.SQLiteClosable
android.database.sqlite.SQLiteDatabase
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-亰舒仗仂.
亠仂亟.
insert() // 于仂亰于舒舒亠 id 于舒于仍亠仆仆仂亶 仂从亳
update() // 于仂亰于舒舒亠 从仂仍亳亠于仂 仂弍仆仂于仍亠仆仆
仂从
replace() // 亰舒仄亠仆舒 (亠亟从仂 亳仗仂仍亰仂于舒仍)
delete() // 于仂亰于舒舒亠 从仂仍亳亠于仂 亟舒仍亠仆仆 仂从
亠仂亟.
IsOpen() // true, 亠仍亳 弍舒亰舒 弍仍舒 仆亠 亰舒从舒
IsReadOnly() // true, 亠仍亳 弍舒亰舒 弍仍舒 仂从舒
仂仍从仂 亟仍 亠仆亳
亠仂亟. 丐舒仆亰舒从亳.
beginTransaction() // 仆舒舒仍仂
endTransaction() // 从仂仆亠
inTransaction() // true, 亠仍亳 仂从舒 舒仆亰舒从亳
setTransactionSuccessful() // 仂仍从仂 仗仂仍亠 于亰仂于舒
仂亞仂 仄亠仂亟舒 舒仆亰舒从亳 弍亟亠 亰舒从仂仄亳亠仆舒.
弌仂亰亟舒仆亳亠. 弌仗仂仂弍 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);
弌仗仂仂弍 1. 舒舒仄亠.
path // 仗 从 舒亶仍 弍舒亰 亟舒仆仆.  亟仍 仍ミ頴笑 弍舒亰 亟舒仆仆 亳仄亠亠 于亳亟:
束/data/data/<package_name>/databases. <package_name>  亳仄 仗舒从亠舒, 从仂仂仂亠 于
从舒亰于舒仍亳 仗亳 仂亰亟舒仆亳亳 仗仂亠从舒.
factory // 仂 仄仂仍舒仆亳 仂亳 null.
flags // 仍舒亞亳 亳仍亳 从仂仆舒仆, 仂仗亠亟亠仍亠仆仆亠 于仆亳 从仍舒舒 SQLiteDatabase. 
于亠亞仂 亠亠: CREATE_IF_NECESSARY (仂亰亟舒于舒 弍舒亰, 亠仍亳 仂 仆亢仆仂),
OPEN_READONLY (仂从 仂仍从仂 亟仍 亠仆亳), OPEN_READWRITE (亳舒 亳
仗亳舒), NO_LOCALIZED_COLLATORS (仂从 弍亠亰 仗仂亟亟亠亢从亳 仍仂从舒仍亳亰舒亳亳)
弌仗仂仂弍 2.
SQLiteDatabase openOrCreateDatabase(String name,
int mode, SQLiteDatabase.CursorFactory factory)
弌仗仂仂弍 2. 舒舒仄亠.
name // 亳仄 弍舒亰 亟舒仆仆, 仆亳从舒仍仆仂亠 于 舒仄从舒 仗亳仍仂亢亠仆亳
mode // 从仂仆舒仆舒, 亟仍 从舒亰舒仆亳 亠亢亳仄舒 (MODE_PRIVATE
亳仍亳 0  仗仂 仄仂仍舒仆亳, MODE_WORLD_READABLE 亟仍
亠仆亳, MODE_WORLD_WRITEABLE 亟仍 亰舒仗亳亳)
factory // 仗仂从舒 仆亠 仂亞舒亠仄, 舒于亳仄 null
弌仗仂仂弍 2. 亠仂亟.
boolean deleteDatabase(String name) // 亟舒仍磳 弍舒亰
仗仂 亳仄亠仆亳. True, 亠仍亳 亰舒于亠亳仍仂 仗亠仆仂.
File getDatabasePath(String name) // 于仂亰于舒舒亠
舒弍仂仍ム仆亶 仗 仗仂 亳仄亠仆亳 弍舒亰
弌仗仂仂弍 3. 亠舒亳.
java.lang.Object
android.database.sqlite.SQLiteOpenHelper
弌仗仂仂弍 3. 亠仂亟.
void close() // 亰舒从 于亠 仂从亠 仂亠亟亳仆亠仆亳
SQLiteDatabase getReadableDatabase() //
于仂亰于舒舒亠 弍舒亰 亟仍 亠仆亳
SQLiteDatabase getWritableDatabase() // 弍舒亰舒 亟仍
亠仆亳 亳 亰舒仗亳亳
onOpen(SQLiteDatabase db) // 于亰于舒亠 仗仂仍亠
仂亞仂, 从舒从 弍舒亰舒 弍亟亠 仂从舒
弌仗仂仂弍 3. 亠仂亟.
onCreate(SQLiteDatabase db) // 于亰于舒亠 仗仂仍亠
仂亞仂, 从舒从 弍舒亰舒 仂亰亟舒仆舒 于 仗亠于亶 舒亰. 亟亠
仂亰亟舒ム 仆亠仂弍仂亟亳仄亠 舒弍仍亳.
onUpgrade(SQLiteDatabase db) // 于亰于舒亠,
从仂亞亟舒 弍舒亰亠 仆亢亠仆 舒仗亞亠亶亟. 亟亠 亟舒仍ム
舒弍仍亳, 仂亰亟舒ム 仆仂于亠, 亟仂弍舒于仍ム 仗仂仍 亳
舒从 亟舒仍亠亠.
弌仗仂仂弍 3. 仂仆从仂.
SQLiteOpenHelper(Context context, String name,
SQLiteDatabase.CursorFactory factory, int version)
弌仗仂仂弍 3. 舒舒仄亠.
context // 从仂仆亠从 仗亳仍仂亢亠仆亳. 仄亠仆仆仂 亠亠亰 亠亞仂 仄亠仂亟
openOrCreateDatabase() 亳 舒弍仂舒亠 SQLiteOpenHelper
name // 亳仄 弍舒亰
factory // null
version // 于亠亳 弍舒亰. 仗仂仍亰亠, 从仂亞亟舒 亠仄 弍舒亰
亟舒仆仆 仆亢仆仂 仂弍仆仂于亳.
弌仗仂仂弍 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);
}
}
弌仗仂仂弍 3.
// 仂仍亠仆亳亠 弍舒亰
DatabaseHelper mDbHelper = new DatabaseHelper(mCtx);
SQLiteDatabase mDb = mDbHelper.getWritableDatabase();
仂弍仍亠仄
database is locked // 于仂亰仆亳从舒亠 仗亳 仄仆仂亞仂仗仂仂仆仂亶 亰舒仗亳亳 于 弍舒亰.
database is closed // 仄仂亢亠 于仂亰仆亳从仆 仗亳 舒弍仂亠  弍舒亰仂亶 亳亰 舒亰仆
舒亠亶 仗仂亞舒仄仄, 仆舒仗亳仄亠, Activity 亳 Service.
corrupted database // 于仂亰仆亳从舒亠, 亠仍亳 舒亶仍 弍舒亰 亟舒仆仆 弍仍 亳仗仂亠仆
仍亳弍仂 仗仂仍亰仂于舒亠仍亠仄, 仍亳弍仂 仗亳 仆亠仂亢亳亟舒仆仆仂仄 仗亠于舒仆亳亳 亰舒仗亳亳 于 弍舒亰
(于从仍ム亠仆亳亠 亠仍亠仂仆舒, 仂亳弍从舒 OS, 仆亠于舒从舒 仗仂舒仆于舒, 弍亳亠
亠从仂舒 仆舒 SD 从舒亠 亳 .亟.)
仆亳亰从舒 仗仂亳亰于仂亟亳亠仍仆仂 仗亳 舒弍仂亠  弍舒亰仂亶 亟舒仆仆 // 仄仂亢亠
于仂亰仆亳从仆 亳亰-亰舒 于仆亠仆仆亳 弍仍仂从亳仂于仂从, 从仂仆从亳ム亳 舒仆亰舒从亳,
于仂从仂仄 仂于仆亠 亢仆舒仍亳仂于舒仆亳, 仂于亳亳 仗舒从亠仆仂亶 仂弍舒弍仂从亳.
仂仄舒仆亠亠 亰舒亟舒仆亳亠
1. 亠舒仍亳亰仂于舒 于仂 弍舒亰 亠仍亠仂仆仆仂亞仂
仗舒于仂仆亳从舒.
2. 亠舒仍亳亰仂于舒 弍舒亰, 从仂仂舒 弍亟亠
仗亳仄亠仆 于 于舒亠仄 仗仂亠从亠.
亳亠舒舒
1. http://webhybrid.ru/prog/android/sqlite.php
2. http://idev.by/android/311/
3. http://blog.iobit.org.ua/articles/46/android-rabota-s-bazoi-
dannykh-chast-2
弌仗舒亳弍仂 亰舒 于仆亳仄舒仆亳亠!

More Related Content

Lec 13

  • 1. 仗仂 Java/Android 舒仆亳亠 13 仍亠从舒仆亟 亳仆 e-mail: alexandr.rusin@gmail.com Android Developer
  • 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() // 于仂亰于舒舒亠 从仂仍亳亠于仂 亟舒仍亠仆仆 仂从
  • 6. 亠仂亟. IsOpen() // true, 亠仍亳 弍舒亰舒 弍仍舒 仆亠 亰舒从舒 IsReadOnly() // true, 亠仍亳 弍舒亰舒 弍仍舒 仂从舒 仂仍从仂 亟仍 亠仆亳
  • 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 (仂从 弍亠亰 仗仂亟亟亠亢从亳 仍仂从舒仍亳亰舒亳亳)
  • 10. 弌仗仂仂弍 2. SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory)
  • 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) // 于亰于舒亠, 从仂亞亟舒 弍舒亰亠 仆亢亠仆 舒仗亞亠亶亟. 亟亠 亟舒仍ム 舒弍仍亳, 仂亰亟舒ム 仆仂于亠, 亟仂弍舒于仍ム 仗仂仍 亳 舒从 亟舒仍亠亠.
  • 16. 弌仗仂仂弍 3. 仂仆从仂. SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
  • 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 从舒亠 亳 .亟.) 仆亳亰从舒 仗仂亳亰于仂亟亳亠仍仆仂 仗亳 舒弍仂亠 弍舒亰仂亶 亟舒仆仆 // 仄仂亢亠 于仂亰仆亳从仆 亳亰-亰舒 于仆亠仆仆亳 弍仍仂从亳仂于仂从, 从仂仆从亳ム亳 舒仆亰舒从亳, 于仂从仂仄 仂于仆亠 亢仆舒仍亳仂于舒仆亳, 仂于亳亳 仗舒从亠仆仂亶 仂弍舒弍仂从亳.
  • 21. 仂仄舒仆亠亠 亰舒亟舒仆亳亠 1. 亠舒仍亳亰仂于舒 于仂 弍舒亰 亠仍亠仂仆仆仂亞仂 仗舒于仂仆亳从舒. 2. 亠舒仍亳亰仂于舒 弍舒亰, 从仂仂舒 弍亟亠 仗亳仄亠仆 于 于舒亠仄 仗仂亠从亠.
  • 22. 亳亠舒舒 1. http://webhybrid.ru/prog/android/sqlite.php 2. http://idev.by/android/311/ 3. http://blog.iobit.org.ua/articles/46/android-rabota-s-bazoi- dannykh-chast-2