1. 程式人生 > >儲存三:SQLite資料庫儲存

儲存三: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();