Android QLite 資料庫的詳解,androidqlite
QLite採用動態資料類型,當某個值插入到資料庫時,SQLite將會檢查它的類型,如果該類型與關聯的列不匹配,SQLite則會嘗試將該值轉換成該列的類型,如果不能轉換,則該值將作為本身的類型儲存,SQLite稱這為“弱類型”。但有一個特例,如果是INTEGER PRIMARY KEY,則其他類型不會被轉換,會報一個“datatype missmatch”的錯誤。SQLite支援NULL、INTEGER、REAL、TEXT和BLOB資料類型,分別代表空值、整型值、浮點值、字串文本、二進位對象SQLite 只提供資料庫級的鎖定。SQLite 沒有使用者帳戶概念,而是根據檔案系統確定所有資料庫的許可權。完成了對資料庫的操作後,記得調用SQLiteDatabase的close()方法釋放資料庫連接,否則容易出現SQLiteException。SQlite 通過檔案來儲存資料庫,一個檔案就是一個資料庫。資料庫裡又包含數個表格;每個表格裡麵包含了多個記錄;每個記錄由多個欄位組成;每個欄位都有其對應的值;每個值都可以指定類型。資料庫名稱即檔案名稱;表格有自己的名稱;記錄沒有名稱;每個欄位都有名稱。在SQlite中,記錄沒有順序的概念,不存在第一、第二此類的概念;只能通過查詢來擷取滿足條件的記錄。我們通過執行SQL指令來操作資料庫。SQLiteOpenHelper類介紹SQLiteOpenHelper是SQLiteDatabase的一個協助類,用來管理資料庫的建立和版本的更新。一般是建立一個類繼承它,並實現它的onCreate和onUpgrade方法構造方法,一般是傳遞一個要建立的資料庫名稱那麼參數SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version)建立資料庫時調用onCreate(SQLiteDatabase db)版本更新時調用onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)建立或開啟一個唯讀資料庫getReadableDatabase()建立或開啟一個讀寫資料庫getWritableDatabase()建立資料庫這裡特別的地方是通過調用了SQLiteOpenHelper類的getReadableDatabase()方法來實現建立一個資料庫的DatabaseHelper database = new DatabaseHelper(this);//這段代碼放到Activity類中才用thisSQLiteDatabase db = null;db = database.getReadalbeDatabase();SQLiteDatabase類為我們提供了很多種方法,而較常用的方法如下(傳回值)方法名方法描述(int) delete(String table,String whereClause,String[] whereArgs)刪除資料行的便捷方法(long) insert(String table,String nullColumnHack,ContentValues values)添加資料行的便捷方法(int) update(String table, ContentValues values, String whereClause, String[] whereArgs)更新資料行的便捷方法(void) execSQL(String sql)執行一個SQL語句,可以是一個select或其他的sql語句(void) close()關閉資料庫(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語句,返回帶遊標的資料集(與上面的語句最大的區別就是防止SQL注入)資料查詢資料查詢相對前面幾種方法就複雜一些了,因為查詢會帶有很多條件通過query實現查詢的public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)各參數說明:table:表名稱colums:列名稱數組selection:條件子句,相當於whereselectionArgs:條件陳述式的參數數組groupBy:分組having:分組條件orderBy:排序類limit:分頁查詢的限制Cursor:傳回值,相當於結果集ResultSet針對遊標(Cursor)也提供了不少方法方法名稱方法描述getCount()總記錄條數isFirst()判斷是否第一條記錄isLast()判斷是否最後一條記錄moveToFirst()移動到第一條記錄moveToLast()移動到最後一條記錄move(int offset)移動到指定的記錄moveToNext()移動到嚇一條記錄moveToPrevious()移動到上一條記錄getColumnIndex(String columnName)獲得指定列索引的int類型值