我的数据库上的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