java - 使用容器进行 SQL 字符串查询

标签 java sql

// 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/

相关文章:

java - 如何打印 boolean 数组的索引?

java - 使用父类(super class)的构造函数

java - 如何获取appengine应用当前的服务器地址?

php - stripslashes 对 SQL 注入(inject)的有效性?

sql - Rails 4 中的左外连接

php - 文档共享系统的数据库设计

java - 如何启用Zabbix tomcat每秒接收字节数项?

java - 更改现有 BufferedImage 的颜色空间?

mysql - 在MySQL中使用存储过程时遇到两个问题

mysql - 删除索引高于 X 且具有相同值的行