Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Resultset.next返回true,但不返回值_Java_Mysql_Resultset - Fatal编程技术网

Java Resultset.next返回true,但不返回值

Java Resultset.next返回true,但不返回值,java,mysql,resultset,Java,Mysql,Resultset,我正在尝试从mysql表中读取数据,我正在执行以下操作: protected void pushRegisteredStudentsData() { try { conn = (Connection) DriverManager.getConnection(DB_URL, USER, PASS); stmt = conn.createStatement(); String userID = "SELECT * FROM STUDENT";

我正在尝试从mysql表中读取数据,我正在执行以下操作:

protected void pushRegisteredStudentsData() {
    try {
        conn = (Connection) DriverManager.getConnection(DB_URL, USER, PASS);
        stmt = conn.createStatement();

        String userID = "SELECT * FROM STUDENT";
        rs = stmt.executeQuery(userID);
        while (rs.next()) {
            int id = rs.getInt("ID");
            this.studentID = id;
            String insertSql = "INSERT INTO REGISTEREDSTUDENTS(StudentID, ModuleCode) VALUES ('" + studentID + "', + '"
                    + this.moduleCode + "')";
            System.out.println("Inserting into REGISTEREDSTUDENTS.. [" + id + "]" + "[" + this.moduleCode + "]");
            stmt.executeUpdate(insertSql);
        }
    } catch (SQLException e) {

    }
}
…但出于某种原因

while (rs.next()) {
    int id = rs.getInt("ID");
始终返回相同的ID,即使表的每一行上都有不同的ID

有人知道为什么会这样吗? 提前谢谢你!:

编辑:
我使用了一条语句来执行2个更新,这导致了问题

它总是返回相同的值,这有点奇怪,因为它应该只返回第一个值一次

如果您打印stacktrace,而不是只捕获异常而不执行任何操作,您将看到它将打印如下内容:

java.sql.SQLException: Operation not allowed after ResultSet closed
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
    at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:794)
对Select使用相同的语句,然后对Insert使用相同的语句。这会导致附加到语句的resultSet关闭,因为不应再次使用它

可以通过创建另一条语句轻松修复该问题:

        String insertSql = "INSERT INTO REGISTEREDSTUDENTS(StudentID, ModuleCode) VALUES ('" + studentID + "', + '"
                + this.moduleCode + "')";
        System.out.println("Inserting into REGISTEREDSTUDENTS.. [" + id + "]" + "[" + this.moduleCode + "]");
        Statement stmt2 = conn.createStatement();
        stmt2.executeUpdate(insertSql);

请直接粘贴您的代码。您是否尝试过int id=Integer.parseIntrs.getObject1Is id列唯一,这意味着学生表中可能有多行具有相同id?否,因为我不想按绝对值获取对象,而是逐行读取@YassinHajaj@DBugID是唯一的!哪个列是您的ID列?如果是第一个,我提供给你的代码应该适用于每一行。先生,你是一个传奇!如果可以,我会给你2分而不是1分!谢谢大家!@卢安佐特