【问题标题】:sqlite - How to use a variable in Where clause?sqlite - 如何在 Where 子句中使用变量?
【发布时间】:2013-06-16 22:08:09
【问题描述】:

已编辑 - 在 reposnse 后添加了更多代码(仍然无法正常工作)

我想使用使用变量的 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 工作?

【问题讨论】:

    标签: java sqlite where


    【解决方案1】:

    试试这个

    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
    }
    

    【讨论】:

    • 我根据此响应编辑了我的原始帖子以包含更多代码,但仍然无法正常工作(我还阅读了下面提到的链接)
    • 您使用的不是来自prepareStatementPreparedStatement,而是Statement 对象。如上所示使用PreparedStatement
    • 完美!谢谢一百万!
    【解决方案2】:

    尝试使用这样的东西:

    String selectSQL = "SELECT USER_ID, USERNAME FROM DBUSER WHERE USER_ID = ?";
    PreparedStatement preparedStatement = dbConnection.prepareStatement(selectSQL);
    preparedStatement.setInt(1, 1001);
    

    【讨论】:

      【解决方案3】:

      为此,您可以使用 PreparedStatement。代码应如下所示:

          String sqlStatement = "SELECT * FROM " + TABLE_NAME + " WHERE docName = ?"              
          PreparedStatement preparedStatement = dbConnection.prepareStatement(sqlStatement);
      
          preparedStatement.setString(1, "Penut");
          preparedStatement.executeUpdate();
      

      【讨论】:

        【解决方案4】:

        如果您想使用绑定变量,那么您需要使用准备好的语句并显式绑定变量的值。作为变量的占位符,您必须使用 ?而不是变量的名称。在您的代码中 myInput 将被视为列名。看看Specifying a variable name in QUERY WHERE clause in JDBC

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-06-14
          • 2016-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多