// First
String query = "SELECT * FROM " + tableNAME + " where kelimeGrubu = 'test' ";
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, null);
//Second
String str = "test"
String query = "SELECT * FROM " + tableNAME + " where kelimeGrubu = " + str;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, null);
这是我的代码,第一个代码工作正常,没有问题。但我需要第二个给出运行时错误
的问题,可能是什么问题?
最佳答案
您没有在第二个示例中的 SQL 语句中引用字符串。您构建的 SQL 查询如下所示:
SELECT * FROM tableNAME where kelimeGrubu = test
...但是由于 test
不是列名,因此您会收到运行时查询错误。您可以通过准备好的语句来解决这个问题:
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(
"SELECT * FROM " + tableNAME + " WHERE kelimeGrubu = ?",
new String[] { str }
);
...当 str
可能由用户控制时,这还可以防止潜在的 SQL 注入(inject)攻击。
关于java - 使用容器进行 SQL 字符串查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62318522/