Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android中有關SQLite數據庫的特性和概念加使用方法詳解!

android中有關SQLite數據庫的特性和概念加使用方法詳解!

編輯:關於Android編程


2. 數據庫的操作流程
[使用條件] 准備數據庫系統(MySQL) --> 創建數據庫(DATABASE) --> 創建/設計數據表(TABLE) --> 數據操作
[數據操作] 連接數據庫(Connection) --> 准備SQL語句(String sql) --> 執行SQL語句(Statement/PreparedStatement) --> 處理結果(int/ResultSet)




3. 使用SQLite
1) 創建數據庫
openOrCreateDatabase(String name, int mode, CursorFactory factory)
String name:數據庫文件名,例如users.db,使用SQLite可以不強求數據庫文件的擴展名。
int mode:訪問模式,應該使用常量。
CursorFactoty factory:游標工廠,通常使用null。
數據庫創建成功後,會保存在 /data/data/包名/databases/ 下


2) 創建數據表
openOrCreateDatabase()的返回值為SQLiteDatabase對象,使用該對象的execSQL(String sql)方法即可執行SQL指令
CREATE TABLE dictionary (_id INTEGER PRIMARY KEY AUTOINCREMENT, en VARCHAR(50) NOT NULL UNIQUE, zh VARCHAR(50) NOT NULL);


3) 數據操作
使用execSQL(String sql)用於執行單一的沒有變量的SQL語法,即不需要預編譯的,通常表現為與數據表相關的操作,使用execSQL(String sql, Object[] bindArgs)用於執行與數據本身相關的操作。
execSQL()方法沒有返回值,絕對不可以用於查詢,亦不推薦用於執行增加、修改、刪除操作。
android官方推薦execSQL()不用於執行任何增刪改查的數據操作。


4) 認識ContentValues類
在數據操作中,使用insert / update ... 方法需要使用該類型的數據,其本質上是操作HashMap,其中Key對應數據表中的字段名,Value對應其操作的字段的數據


5) 使用db.insert(String table, String nullColumnHack, ContentValues values)插入記錄
String table:表名
String nullColumnHack:僅當第3個參數values為null或者沒有值(values.size==0)時需要,用於保全sql語句是完整的
ContentValues values:配置需要操作的字段與字段的值
返回值:出現錯誤時返回-1,否則返回插入的記錄的ID


6) 使用db.update(table, values, whereClause, whereArgs)修改記錄
String table:表名
ContentValues values:同上
whereClause:where子句,不要添加"where"字符,該參數值例如"_id=? or (username=? and password=?)"
whereArgs:where子句中的參數,應該與whereClause中的問號匹配
返回值:受影響的行數


7) 使用db.delete(String table, String whereClause, String[] whereArgs)刪除記錄
各參數的說明同上
返回值:受影響的行數


8) 使用db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)查詢記錄
String table:表名
String[] columns:字段列表
String selection:參見之前的whereClause
String[] selectionArgs:參見之前的whereArgs
String groupBy:Group By(分組)子句
String having:Having子句
String orderBy:Order By(排序)子句
String limit:limit(分頁)子句


9) 認識Cursor
類似於JDBC的ResultSet接口
主要掌握getXXXX()和moveXXXX()方法


10) 認識SQLiteOpenHelper
構造方法的參數
Context context:上下文對象
String name:數據庫名,文件名,例如tarena.db
CursorFactory factory:游標工廠,取值為null
int version:當前版本,不可低於同應用的歷史版本號

onCreate():創建數據庫時執行
onUpgrade():數據庫版本升級時執行

getReadableDatabase()與getWritableDatabase(),其中,getReadableDatabase()會嘗試獲取可寫的SQLiteDatabase,但是,當存儲空間不足時,會返回只讀的SQLiteDatabase,避免程序錯誤。


11) SimpleCursorAdapter
使用Cursor作為數據源的SimpleAdapter,其中,Cursor中必須包含 _id 的字段,參數String[] from的值為Cursor中的ColumnName



** 數據庫中的char與varchar
char是定長的,如果字符串長度不足約定的長度,則在原字符右側補空格,例如char(8)中存"xyz"將表現為"xyz ",varchar是變長的,長度由字符串本身決定。

** SQLite是對數據類型要求不嚴格的數據庫

任意的字段都可以接受任意數據類型的數據,但是,不推薦隨意填充數據


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved