【问题标题】:Parametrized queries in javajava中的参数化查询
【发布时间】:2021-06-28 16:36:36
【问题描述】:

我在从数据库中检索列时遇到问题

这是我的代码

public String ShowtimeQur(int MovieID)
{
    rs3 = null;
    String  RoomID=null;
    String ShowTime = null;

    try 
    {
        String qu ="Select Room_ID from Movie_Shows_in where Movie_ID="+MovieID;
        //getRoomQur.setInt(1, MovieID);
         rs3=getRoomQur.executeQuery(qu);
        RoomID=rs3.getString("Room_ID");
        getShowtimequr.setString(1, RoomID);
        rs4=getShowtimequr.executeQuery();
        ShowTime=rs4.getString("Show_Times");
    }
    catch (SQLException e)
    {
        e.printStackTrace();
    }

    return ShowTime;
}

我不断收到这种类型的错误

java.sql.SQLException: 当前光标位置的操作无效。

【问题讨论】:

  • 请解释您的 SQL 逻辑,并可能添加一些示例数据。
  • 不相关:变量名在 Java 中采用驼峰命名法。因此,请阅读 Java 命名约定并遵守它们。

标签: java mysql sql arrays


【解决方案1】:

使用PreparedStatement

PreparedStatement statement = con.prepareStatement("Select Room_ID from Movie_Shows_in where Movie_ID=?");
statement.setInt(1, MovieID);
ResultSet res = statement.executeQuery()
...
rest of your code

永远,永远,永远不要使用字符串连接来构建查询,因为你会让自己面临SQL Injection的风险

【讨论】:

    【解决方案2】:

    和之前的答案一样,你应该声明一个“ResulSet result”变量,并且在查询执行后,你应该调用“result.next()”方法将光标指向第一行(最初指向不存在的第 0 行),然后通过示例调用诸如“result.getString(columnNumber)”之类的检索数据方法。

    【讨论】:

      猜你喜欢
      • 2016-04-08
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多