**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
5天前关闭。
Improve this question
我在使用Java方法更新SQL中的一条记录时遇到了问题,该方法名为“joinClassroom()”,基本上,它通过方法retrieveClassID从表“classes”中检索“classroom code”的ID,然后将该ID输入到表“students”的“classroom_id”列下。此代码的目的是类似于教师能够创建教室的kahoot函数,学生可以通过随机生成的代码加入其中。
然而,当方法运行时,我收到一条“Illegal operation on empty result set”消息,我不知道为什么resultSet是空的,因为我正在输入数据库中存在的课堂代码。这是我的代码的问题,不是吗?
方法:
public static int retrieveClassID(ActionEvent event, String classroom_code) throws SQLException {
Connection connection = null;
PreparedStatement preparedStatement = null;
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/x", "x", "x");
preparedStatement = connection.prepareStatement("SELECT classroom_id FROM classrooms WHERE classroom_code = ?");
preparedStatement.setString(1, classroom_code);
ResultSet resultSet = preparedStatement.executeQuery();
String retrievedID = resultSet.getString("classroom_id");
int retrievedID2 = Integer.parseInt(retrievedID);
if (resultSet != null) {
resultSet.close();
}
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
return retrievedID2;
}
然后在我的更大的方法joinClassroom()中使用这个方法
public static void joinClassroom(ActionEvent event, String class_code, String email) throws SQLException {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/x", "x", "x");
preparedStatement = connection.prepareStatement("UPDATE students SET classroom_id = ? WHERE user_id = ?");
preparedStatement.setString(1, String.valueOf(retrieveClassID(event, class_code)));
preparedStatement.setString(2, String.valueOf(getUser_id()));
resultSet = preparedStatement.executeQuery();
if (resultSet != null) {
resultSet.close();
}
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
}
错误出现在线上
String retrievedID = resultSet.getString("classroom_id");
方法的retrieveClassID。
错误:
java.sql.SQLException:对空结果集进行非法操作。
下面是该方法在程序中实际使用的地方:
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
button_proceed.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if (!textField_code.getText().trim().isEmpty()) {
try {
System.out.println("event about to execute");
joinClassroom(event, textField_code.toString(), Utility.getUser_email());
System.out.println("event executed");
} catch (SQLException e){
e.printStackTrace();
}
}
}
});
}
我试过重命名引用,也试过将方法retrieveClassID()
和joinClassroom()
连接在一起,但都不起作用。
1条答案
按热度按时间ulydmbyx1#
据我所知,
executeQuery
只用于SELECT查询。如果你想执行DML查询(插入,更新,删除),你必须使用executeUpdate
。