每当搜索查询包含'char my android app崩溃时,因为它认为'拆分字符串'。 这是一个例子 -
Cursor selCur= myDataBase.rawQuery("SELECT * FROM drinks WHERE name like '%"+editTextSearch.getText().toString()+"%'", null);
每当editTextSearch.getText().toString()
包含'(例如 - “Ben's”)时,应用程序就会崩溃。
我无论如何都想不到它。 真的可以使用帮助。
谢谢!
答案 0 :(得分:4)
你真正应该做的是使用带有String数组的SQLiteDatabase
方法rawQuery
来选择args:
Cursor selCur= myDataBase.rawQuery("SELECT * FROM drinks WHERE name like ?", new String[] {"%" + editTextSearch.getText().toString() + "%"});
你放置一个问号?
代替你想要的字符串,然后把实际的字符串放在一个数组中,就像我上面一样。您的查询字符串中可以包含多个?
,只需确保您的数组大小与您拥有的?
匹配。
编辑:同样对于使用like
,您可能希望在我刚刚更改的String数组中添加%
符号。我发现这会产生一个我期望的查询,而不是在查询字符串本身中包含%
。
答案 1 :(得分:0)
转义'字符,不确定这是否是正确的语法,但这样的事情应该有效:
Cursor selCur= myDataBase.rawQuery("SELECT * FROM drinks WHERE name like '%"+editTextSearch.getText().toString().replace("'", "''")+"%'", null);
顺便注意sql注入。你应该验证editTextSearch字段以进行sql注入。
答案 2 :(得分:0)
你应该这样使用它:
String args [] = new String [] {editTextSearch.getText()。toString()};
Cursor selCur = myDataBase.rawQuery(“SELECT * FROM drink WHERE name like'%?%'”,args);