上篇[Android] 3-6 SQLite基礎 - 基礎API介紹了用基本API的方法來對SQLite做處理
在看這篇之前請先讀過前篇, 這篇簡單介紹
a. 直接使用SQLite的語法來作資料庫處理
b. 不在內建DB位置下創建和開啟資料庫的方法
1. 首先介紹創建DB的方法, 用openOrCreateDatabase來創建DB
這邊的例子是要在sdcard的位置下創建名叫MyDB的資料庫, 程式碼如下
SQLiteDatabase db = this.openOrCreateDatabase
("/sdcard/MyDB", SQLiteDatabase.OPEN_READWRITE, null);
這個方法也可以將自己預先創好的DB放到相對應位置
接著在來開啟它
完成這段程式碼時可以先編譯執行
2. 這邊要在Manifest開啟android.permission.WRITE_EXTERNAL_STORAGE的權限,
因為Android在使用SQLite的時候會創建journal檔案, 所以要用WRITE權限而不是READ
3. 接著就可以利用DDMS來查看sdcard的位置,
可以看到右邊的有一條路徑, 指的是Mapping過去的位置
實際上的檔案要在右邊的路徑上找
4. 到了相對應的位置看見步驟1執行後產生的MyDB
5. 有了資料庫之後, 需要建立Table, 這邊的建立方法就是利用SQLite的語法
然後用execSQL去執行, 程式碼如下:
final String create = "CREATE TABLE IF NOT EXISTS "
+ "MyTable" + " ("
+ "name" + " TEXT NOT NULL, "
+ "id" + " INTEGER PRIMARY KEY,"
+ "age" + " INTEGER"
+ ")";
db.execSQL(create);
6. 執行完後可以用sqliteman來查看DB來確認剛建立的table
7. 接著介紹新增資料的方法, 也是利用execSQL來執行, 程式碼如下:
db.execSQL("INSERT INTO MyTable (name, id, age)" +
" VALUES ('P1', 1, 10);");
8. 執行完後可以用sqliteman來查看DB來確認剛新增的資料
9. 接著介紹更新資料的方法, 也是利用execSQL來執行, 程式碼如下:
db.execSQL("UPDATE MyTable" +
" SET name = 'p5'" +
" WHERE id = 1;");
10. 執行完後可以用sqliteman來查看DB來確認剛更新的資料
11. 接著介紹刪除資料的方法, 也是利用execSQL來執行, 程式碼如下:
db.execSQL("DELETE FROM MyTable where name = 'p5';");
12. 執行完後可以用sqliteman來查看DB來確認剛刪除的資料
13. 接著連續創建10筆資料, 程式碼如下
for(int i = 0; i < 10; i++){
db.execSQL("INSERT INTO MyTable (name, id, age)" +
" VALUES ('test', " + i + ", " + i * 10 + ");");
}
14. 執行完後可以用sqliteman來查看DB來確認剛創建的資料
15. 接著介紹查詢的方法, 這邊使用rawQuery("SQLite的語法", null)來執行
和之前API的版本差異就在此, 用rawQuery則可以直接套用SQLite的語法
熟悉SQLite就可以藉此設定查詢方式, 程式碼如下 :
Cursor c = db.rawQuery("SELECT * FROM MyTable", null);
16. 把查詢到的資料用Log顯示出來, 程式碼如下:
int row = c.getCount();
int col = c.getColumnCount();
c.moveToFirst();
for (int i = 0; i < row; i++) {
for(int j = 0; j < col; j++){
Log.d("MainActivity", c.getString(j));
}
c.moveToNext();
}
c.close();
17. 最後可以在Log上看到剛查詢到的資料
這篇簡單介紹用SQLite的語法直接使用方式
這樣作出的程式碼會比呼叫套件好的API更容易修改查詢
而Android裡面SQLite的部分execptions並不是強制要求
此篇為了清楚表達執行語法所以沒有特別舉例加的位置
下一篇舉例最簡單的用法[Android] 3-8 SQLite基礎 - 基礎Exception