儲存三:SQLite資料庫儲存
SQLite的的的資料庫儲存
描述: Android系統內建資料庫。
路徑: / data / data / <package name> / databases /目錄下
建立資料庫:
a, SQL語法建立表:
建立表書(
create table Book(
id integer primary key autoincrement,
author text,
price real,
pages integer,
name text)
b, SQLiteOpenHelper類:
抽象方法: onCreate(),onUpgrate():通常會在這裡處理一下建立表的邏輯。
例項方法: getReadableDatabase(),getWritableDatabase():這兩個方法可以建立或開啟一個現有的資料庫。
一般操作流程:構建出的的SQLite的的例項後,再呼叫getReadableDatabase()或getWritableDatabase()就能方法建立資料庫,此時,重寫的的的的onCreate()方法也會執行,通常會在這裡處理一下
onCreate()方法建立表:
publc static final String CREATE_BOOK = "create table Book("
+"id integer primary key autoincrement,"
+"author text,"
+"price real,"
+"pages integer,"
+"name text)";
然後在onCreate()進行db.execSQL(CREATE_BOOK);進行建立Book表;
升級資料庫:
當在一個之前建立好的資料庫新增多一個表格的時候,onCreate()就不會再執行了,所以如果新增其他表時,需要用到onUpgrate()方法。
在onUpgrate()方法執行:
db.execSQL(drop table if exists Book");
db.execSQL(drop table if exists XXX");
onCreate(db);
如何讓onUpgrate()得到執行呢?修改SQLiteOpenHelper構造方法的第四個引數====版本號
資料操作:
CRUD SQL語言
C:建立新增---------------------------> insert
R:檢索查詢--------------------------->選擇
U:更新更新--------------------------->更新
D:刪除刪除--------------------------->刪除
2:注:呼叫SQLiteOpenHelper類的getReadableDatabase()或getWritableDatabase()方法可以建立和升級資料庫這兩個方法都會返回一個SQliteDatabase物件,藉助這個物件就可以對資料進行CRUD操作了。
新增資料:
例:
dbHelper = new MyDatabaseHelper(this,"BooStore.db",null,2);
SQLiteDatabase db = deHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name","The Vinci");
values.put("author","Dani");
values.put("price",13.99);
db.insert("Book",null,values); //插入第一條資料
values.clear();
//開始組裝第二條資料
values.put("name","The Lost");
values.put("author","Dan");
values.put("price",15.99);
db.insert("Book",null,values); //插入第二條資料
更新資料:
例:
SQLiteDatabase db = deHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("price",10.99); //更改價格
db.update("Book",values,"name = ?", new String[] = {"The Vinci"}); //將The Vinci的價格由13.99降價為10.99
刪除資料:
SQLiteDatabase db = deHelper.getWritableDatabase();
db.delete("Book","name = ?", new String[] = {"The Vinci"}); //將name為he Vinci的那一行刪掉
查詢資料:
呼叫query()方法會返回一個Cursor物件,查詢到的所有資料都將從這個物件取出。
例:
SQLiteDatabase db = deHelper.getWritableDatabase();
//查詢Book表中所有的資料
Cursor cursor = db.query("Book",null,null,null,null,null,null);
//cursor.moveToFirst()遊標移動到第一行的位置。
if(cursor.moveToFirst()){
do{
String name = cursor.getString(cursor.getColumnIndex("name"));
String author = cursor.getString(cursor.getColumnIndex("author"));
int pages = cursor.getInt(cursor.getColumnIndex("pages"));
...
}while(cursor.moveToNext());
}
cursor.close();