当我键入'时,应用程序崩溃了在SearchView中

时间:2015-11-13 11:09:59

标签: android sqlite

我正在开发一个应用程序,当我开始输入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;
            }
        }

2 个答案:

答案 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