java - sqlite - 如何在Where子句中使用变量?

标签 java sqlite where-clause

已编辑 - 在回复后添加了更多代码(仍然不起作用)

我想通过使用变量的Where子句来查询sqlite,但是我无法让它工作。

我设置了一个变量并传递它,但是,只有硬编码才有效......

这有效:

Penut 是 docName 列中的记录之一。

rs = stat.executeQuery("SELECT * FROM " + TABLE_NAME + " WHERE docName = 'Penut'");

但是,这不起作用:

Connection conn = DriverManager.getConnection("jdbc:sqlite:dufuss.db");
Statement stat = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
myInput ="Penut";
String sql = "SELECT * FROM " + TABLE_NAME + " WHERE docName = ?";
conn.prepareStatement(sql).setString(1, myInput);
rs = stat.executeQuery(sql);

那么,如何让变量 myInput 发挥作用?

最佳答案

试试这个

String sql = "SELECT * FROM " + TABLE_NAME + " WHERE docName = ?";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setString(1, myInput);
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
  // iterate through results
}

关于java - sqlite - 如何在Where子句中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17138178/

相关文章:

sql - pl/pgsql 函数中动态 SQL 的语法错误

sql - IBM MaximoWhere 子句

mysql - 连接两个表

java - CXF RESTful 客户端 - 如何信任所有证书?

java - 计算 arraylist 中的出现次数并创建另一个 arraylist

java - 将 neo4j 与 jdk 1.7 一起使用时出错

java - 如何在单击相应的 ListView 项时创建一个包含 SQLite 信息的对话框?

java - close() 从未在 android sqlite 中收到数据库异常时显式调用

java - Maven项目错误: Diamond/multicatch operator not supported in -source 1. 5

SQLite 删除的数据保留在数据库二进制文件中