您好我花了将近2个小时试图弄清楚为什么LIKE语句不起作用,我只得到这个错误: 03-03 11:31:01.770: ERROR/AndroidRuntime(11767): Caused by: android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x89d9f8
在SQLiteManager中,它的工作原理如下:SELECT Word FROM Sign WHERE Word LIKE 'he%';
但是当我尝试从java中执行它时,它将无法工作.这是我的问题,我已经尝试了很多方面没有运气:
Cursor cursor = m_db.query(MY_TABLE, new String[] {"rowid","Word"},"Word"+" LIKE '"+" ?"+"%'", new String[]{name}, null, null, null);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我做错了还是有错误?
谢谢你的时间.
Jon*_*ona 59
解决方案实际上非常简单.只需在selectionArgs中包含%.
String []selectionArgs = {name + "%"});
Run Code Online (Sandbox Code Playgroud)
Ols*_*age 35
我认为你不应该像这样使用selArgs.你可以试试这个:
Cursor cursor = m_db.query(MY_TABLE, new String[] {"rowid","Word"},"Word"+" LIKE '"+name+"%'", null, null, null, null);
Run Code Online (Sandbox Code Playgroud)
编辑:
好的,如果你想从SQL注入安全,不要使用上面的解决方案,使用这个:
Cursor cursor = m_db.query(MY_TABLE, new String[] {"rowid","Word"},"Word LIKE '?'", new String[]{name+"%"}, null, null, null);
Run Code Online (Sandbox Code Playgroud)
这就是我做的:
String []columns = {"_id", "name"};
String []selectionArgs = {name+"%"};
db.query(true,"mydb",columns,"name LIKE ?",selectionArgs,null,null,null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29149 次 |
| 最近记录: |