android數據庫

關係型數據庫SQLite3,它是一個支持SQL輕量級的嵌入式數據庫,在嵌入式操做上有很普遍的,WM採用的也是SQLite3java

首先,咱們看一下api,全部數據庫相關的接口、類都在.database和android.database.sqlite兩個包下,雖然只有兩個包,可是若是你英文很差或是太懶的話也要迷茫一段時間,其實,咱們真正用的到的沒有幾個!android


一、SQLiteOpenHelper (android.database.sqlite.SQLiteOpenHelper)sql


這是一個抽象類,關於抽象類咱們都知道,若是要使用它,必定是繼承它!數據庫


這個類的方法不多,有一個構造方法api


SQLiteOpenHelper(android.content.Context context, java.lang.String name,android.database.sqlite.SQLiteDatabase.CursorFactory factory, int version);數組


參數不作過多的解釋,CursorFactory通常直接傳null就能夠佈局


public void onCreate(SQLiteDatabase db)this


此方法在建立數據庫是被調用,因此,應該把建立表的操做放到這個方法裏面,一下子在後面咱們會再詳細的說如何建立表指針


public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)sqlite


從方法名上咱們就能知道這個方法是執行更新的,沒錯,當version改變是系統會調用這個方法,因此在這個方法裏應該執行刪除現有表,而後手動調用onCreate的操做


SQLiteDatabase getReadableDatabase()


可讀的SQLiteDatabase對象


SQLiteDatabase getWritableDatabase()


獲取可寫的SQLiteDatabase對象


二、SQLiteDatabase(android.database.sqlite.SQLiteDatabase)


關於操做數據庫的工做(增、刪、查、改)都在這個類裏


execSQL(sql)


執行SQL語句,用這個方法+SQL語句能夠很是方便的執行增、刪、查、改


除此以外,Android還提供了功過方法實現增、刪、查、改


long insert(TABLE_NAME, null, contentValues)添加記錄


int delete(TABLE_NAME, where, whereValue)刪除記錄


int update(TABLE_NAME, contentValues, where, whereValue) 更新記錄


Cursor query(TABLE_NAME, null, null, null, null, null, null) 查詢記錄


除此以外,還有不少方法,如:beginTransaction()開始事務、endTransaction()結束事務...有興趣的能夠本身看api,這裏就很少贅述了


三、Cursor(android.database.Cursor)


遊標(接口),這個很熟悉了吧,Cursor裏的方法很是多,經常使用的有:


boolean moveToPosition(position)將指針移動到某記錄


getColumnIndex(Contacts.People.NAME)按列名獲取id


int getCount()獲取記錄總數


boolean requery()從新查詢


boolean isAfterLast()指針是否在末尾


boolean isBeforeFirst()時候是開始位置


boolean isFirst()是不是第一條記錄


boolean isLast()是不是最後一條記錄


boolean moveToFirst()、 boolean moveToLast()、 boolean moveToNext()同moveToPosition(position)


四、SimpleCursorAdapter(android.widget.SimpleCursorAdapter)


也許你會奇怪了,以前我還說過關於數據庫的操做都在database和database.sqlite包下,爲何把一個Adapter放到這裏,若是你用過Android的SQLite3,你必定會知道


,這是由於咱們對數據庫的操做會常常跟列表聯繫起來


常常有朋友會在這出錯,但其實也很簡單


SimpleCursorAdapter adapter = new SimpleCursorAdapter(


this,


R.layout.list,


myCursor,


new String[] ,


new int[]);


my.setAdapter(adapter);


一共5個參數,具體以下:


參數1:Content


參數2:佈局


參數3:Cursor遊標對象


參數4:顯示的字段,傳入String[]


參數5:顯示字段使用的組件,傳入int[],該數組中是TextView組件的id



1、寫一個類繼承SQLiteOpenHelpe


public class DatabaseHelper extends SQLiteOpenHelper


構造方法:


DatabaseHelper(Context context) {


super(context, DATABASE_NAME, null, DATABASE_VERSION);


}


在onCreate方法裏寫建表的操做


public void onCreate(SQLiteDatabase db) {


String sql = "CREATE TABLE tb_test (_id INTEGER DEFAULT '1' NOT NULL PRIMARY KEY AUTOINCREMENT,class_jb TEXT NOT NULL,class_ysbj TEXT NOT NULL,title TEXT NOT NULL,content_ysbj TEXT NOT NULL)";


db.execSQL(sql);//須要異常捕獲


}


在onUpgrade方法裏刪除現有表,而後手動調用onCtreate建立表


public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {


String sql = "drop table "+tbname;


db.execSQL(sql);


onCreate(db);


}


對錶增、刪、查、改的方法,這裏用的是SQLiteOpenHelper提供的方法,也能夠用sql語句實現,都是同樣的


關於獲取可讀/可寫SQLiteDatabase,我不說你們也應該會想到,只有查找纔會用到可讀的SQLiteDatabase


/**


* 添加數據


*/


public long insert(String tname,  

相關文章
相關標籤/搜索