SQLite之execSQL()和rawQuery()


Android提供了一個名爲SQLiteDatabase的類,該類封裝了一些操作數據庫的API,使用該類可以完成對數據進行添加(Create)查詢(Retrieve)更新(Update)和刪除(Delete)操作(這些操作簡稱爲CRUD)。

對SQLiteDatabase的學習,我們應該重點掌握execSQL()和rawQuery()方法。

execSQL()方法可以執行insert、delete、update和CREATE TABLE之類有更改行爲的SQL語句

rawQuery()方法用於執行select語句。


一,execSQL()方法的使用例子:

SQLiteDatabase sqLiteDatabase = ....;  
sqLiteDatabase.execSQL("insert into person(name, age) values('測試數據', 4)");  
sqLiteDatabase.close();  
執行上面SQL語句會往person表中添加進一條記錄,在實際應用中, 語句中的“測試數據”這些參數值會由用戶輸入界面提供,如果把用戶輸入的內容原樣組拼到上面的insert語句, 當用戶輸入的內容含有單引號時,組拼出來的SQL語句就會存在語法錯誤。

要解決這個問題需要對單引號進行轉義,也就是把單引號轉換成兩個單引號。有些時候用戶往往還會輸入像“ & ”這些特殊SQL符號,爲保證組拼好的SQL語句語法正確,必須對SQL語句中的這些特殊SQL符號都進行轉義,顯然,對每條SQL語句都做這樣的處理工作是比較煩瑣的。

SQLiteDatabase類提供了一個重載後的execSQL(String sql, Object[] bindArgs)方法,使用這個方法可以解決前面提到的問題,因爲這個方法支持使用佔位符參數(?)。使用例子如下:

SQLiteDatabase sqLiteDatabase = ....;  
sqLiteDatabase .execSQL("insert into person(name, age) values(?,?)", new Object[]{"測試數據", 4});   
sqLiteDatabase .close();  
execSQL(String sql, Object[] bindArgs)方法的第一個參數爲SQL語句,第二個參數爲SQL語句中佔位符參數的值,參數值在數組中的順序要和佔位符的位置對應。


二,rawQuery()用於執行select語句,使用例子如下:

SQLiteDatabase sqLiteDatabase = ....;  
Cursor cursor = <span style="font-family: Arial, Helvetica, sans-serif;">sqLiteDatabase </span>.rawQuery("select * from person",null);  
//......  
cursor.close();  
sqLiteDatabase .close();  

rawQuery()方法的第一個參數爲select語句;第二個參數爲select語句中佔位符參數的值,如果select語句沒有使用佔位符,該參數可以設置爲null。帶佔位符參數的select語句使用例子如下:

Cursor cursor = sqLiteDatabase.rawQuery("select * from personwhere name like ?and age=?", new String[]{"%iteedu%", "4"});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章