我正在开发一个应用程序,当我开始输入SearchView
时,会显示提示列表。一切进展顺利但是当我输入SearchView
时,应用程序就崩溃了。
public Cursor searchByBrandText(String inputTextBrand) throws SQLException {
db = this.getReadableDatabase();
String where = inputTextBrand;
String extra = "'%" + where + "%'";
String query = "SELECT Brand_Name" + " from " + "Sample" + " where "
+ "Brand_Name" + " LIKE " + extra;
Cursor mCursor = db.rawQuery(query, null);
if (mCursor.getCount() <= 0) {
mCursor.close();
return null;
} else {
return mCursor;
}
}
答案 0 :(得分:1)
&#39; 是SQL字符串分隔符 如果需要插入包含该字符的值,则必须加倍 像这样:
String where = inputTextBrand.replace("'", "''");
或者,更好的是,使用绑定参数(在这种情况下,不需要加倍&#39; )。
像这样:
String query = "SELECT Brand_Name FROM Sample WHERE Brand_Name LIKE ?";
Cursor mCursor = db.rawQuery(query, new String[]{"%" + inputTextBrand + "%"});
答案 1 :(得分:0)
单引号搞乱你的sql查询,这是相当严重的,因为有人可以使用你的文本框对你的数据库执行SQL注入攻击。
这里已经回答了解决这个问题的方法:Android Quotes within an SQL query string