Java Resultset.next返回true,但不返回值
我正在尝试从mysql表中读取数据,我正在执行以下操作: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";
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分!谢谢大家!@卢安佐特