sqlite查詢大體可以分兩種,一是拼完整語句,二是用封裝好的方法用陣列傳參。
string selectioinargs = ;//注意:這裡沒有單引號
string sql = "select "+ table_column_name +"," +table_column_system_name+ " from " + table_name
+ " where " + table_column_name + " like ? ";
cursor cursor = db.rawquery(sql,selectioinargs);
或者(直接拼完整sql)
string sql2 = "select "+ table_column_name +"," +table_column_system_name+ " from " + table_name
+ " where " + table_column_name + " like '%"+keyword+"%'";//注意:這裡有單引號
cursor cursor2 = db.rawquery(sql2,null);
第二種因為是直接完整的sql語句,沒太多問題,第一種這裡的可能發生的錯誤有幾個:
1. string selectionargs =
這個陣列比上面的正確的多了一堆單引號"'"
,導致的結果是單引號被加入匹配串,實際匹配串成了" like ''%keyword%''",意思為必須包含兩邊是單引號和中間任意關鍵字。問題出在多了一對單引號。
2.sql語句後半段:" where " + table_column_name + " like '?' "
這種情況下會報乙個異常,大致意思是說「你沒說需要引數,可是你又硬給我乙個引數,勞資不幹了!」。問題就出在問號不應該用單引號包裹。
原因:
我們使用sqlite查詢的時候用的"where *** = ?"來指定條件,我們知道如果"?部分"是string 型別時,是需要單引號引起來的。
經過幾個錯誤的語句可以判斷出,"?" 的前後位置必須是空格或者逗號,否則會把?和連著的字元整體當做乙個string物件,而不是後補引數空位 。
sqlite 模糊匹配日期 SQLite 模糊查詢
使用sqlite資料庫執行模糊查詢實現 1 使用db.query方法查詢 select from users where name like searcherfilter public list querybylike string searcherfilter cursor cursor db.q...
Sqlite 模糊查詢 區分大小寫
pragma case sensitive like on pragma case sensitive like off select from test where destid 12345 and content like ab string whereclause id and age and...
SQLite 3模糊查詢簡析
sqlite 3模糊查詢簡析 1.建立資料庫 test.db cd sqlite3 test.db 這樣在 目錄下面就生成乙個資料庫檔案 test.db.2.建立表 song www.2cto.com create table if not exists song path text,title v...