sqlite数据库上的游标查询出错

时间:2011-12-30 04:01:49

标签: android sqlite

我正在尝试从游标获取列信息,并获得令人沮丧的错误。我想选择包含$ SEARCH的所有列。这是代码:

Bundle b = getIntent().getExtras();
        SEARCH = b.getString("searchtext");
        Cursor c = mDBHelper.getReadableDatabase().query("table", null, "name="+ SEARCH, null, null, null, null);

由于某种原因,游标抛出了运行时异常。这是错误:

12-30 03:55:00.357: E/AndroidRuntime(1302): Caused by: android.database.sqlite.SQLiteException: near "CAP": syntax error: , while compiling: SELECT * FROM kroger WHERE name=john

不确定为什么会发生这种情况,我的代码中可能存在一个非常简单的错误,但我不确定它是什么。谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

"name="+SEARCH将成为name=CAP,这不是有效的SQL表达式。天真的解决方案是将术语包装在单引号中:

"name='" + SEARCH + "'"

但这受到SQL注入攻击。使用参数传递工具以无注入方式传递搜索项:

query("table", null, "name=?", new String[] {SEARCH}, null, null, null);