我的數據庫上的Android應用程序正與sqllite不能使用 我想用一個類似條款 前檢索SM數據:像在Android應用條款
Cursor c = myDB.query(MY_DATABASE_TABLE, null, " SongName LIKE '%"+"=?"+"%'" ,
new String[]{match_str}, null, null,"SongHit DESC");
它應該給所有SONGNAME開始match_str但它不工作。爲什麼?
我的數據庫上的Android應用程序正與sqllite不能使用 我想用一個類似條款 前檢索SM數據:像在Android應用條款
Cursor c = myDB.query(MY_DATABASE_TABLE, null, " SongName LIKE '%"+"=?"+"%'" ,
new String[]{match_str}, null, null,"SongHit DESC");
它應該給所有SONGNAME開始match_str但它不工作。爲什麼?
此:
" SongName LIKE '%"+"=?"+"%'"
最終會變成這樣,當SQL解釋看到它:
" SongName LIKE '%=?%'"
而且這將匹配包含lite的任何SongName ral「=?」我不認爲這是你想要的東西。
A %
匹配SQL LIKE中的任何字符序列,它與正則表達式中的.*
基本相同;所以,如果你想在一開始就匹配,那麼你不希望領先%
。此外,您的?
佔位符需要在單引號之外,否則它將被解釋爲文字問號而不是佔位符。
你想要更多的東西是這樣的:
String[] a = new String[1];
a[0] = match_str + '%';
Cursor c = myDB.rawQuery("SELECT * FROM songs WHERE SongName LIKE ?", a);
如果你想成爲真正嚴格的,你也不得不逃離內部match_str
%
和_
符號以及但是這作爲練習留給讀者。
喜,能得到任何異常,而在執行上面的查詢。嘗試刪除相似條件下問號的「=」符號。否則,請嘗試使用
db.rawQuery(sql, selectionArgs)
試試這個:
String[] args = new String[1];
args[0] = "%"+song+"%";
Cursor friendLike = db.rawQuery("SELECT * FROM songs WHERE SongName like ?", args);
我想你想要'args [0] =歌曲+「%」;'因爲他們說「從......開始」。 – 2011-04-22 05:49:00
多數民衆贊成多數民衆贊成多數民衆贊成在真正的,只有在參數後使用%獲得**開始** ** – 2011-04-22 06:01:31
偉大的工作很好......但我沒有明白爲什麼上述解決方案沒有奏效。 – sayantan 2011-04-22 06:18:06
這完全適用於我......
"Songname LIKE ? "...
cursor = database.rawQuery(query, new String[]{"%" + searchTerm + "%"});
如果您希望使用query()
,而不是rawQuery()
,你可以做到這一點,像這樣:
// searchString is the string to search for
final String whereClause = "MyColumnName" + " like ?";
String[] whereArgs = new String[]{"%" + searchString + "%"};
Cursor cursor = sqLiteDatabase.query("MyTableName",
null, // columns
whereClause, // selection
whereArgs, // selectionArgs
null, // groupBy
null, // having
null, // orderBy
null); // limit
一個簡單的方法是使用連接運算符||
"SongName LIKE '%'||?||'%'"
所以沒有必要編輯match_str。
Cursor c = myDB.query(MY_DATABASE_TABLE, null, " SongName LIKE '%'||?||'%'" ,
new String[]{match_str}, null, null,"SongHit DESC");
我使用edittext使用戶能夠搜索songs.i想要的應用程序使用它的即時srch我的意思是,我希望我的應用程序的列表視圖中的搜索結果立即作爲用戶在編輯文本框中按照訪問最多的歌曲的順序輸入。我正在使用一個DB的歌曲,但我恐怕它可能太慢了。此外,我希望我的edittext listner放慢速度,等待用戶完成他的文本我使用System.currentTimeMillis()作爲標記nd等待fr。 5秒不等。我是新來的機器人,不知道它會工作與否..請告訴我smthing – sayantan 2011-04-22 06:37:50
@ user712771:這聽起來像一個全新的問題,會更好地回答了一個比我更瞭解Android的人。 – 2011-04-22 07:09:44
謝謝,但我真的認爲你可以幫助..我想我應該問它作爲一個單獨的問題.. – sayantan 2011-04-22 09:13:23