我试图从数据库中获取值,以便我可以在 while 循环内检查它们,但 rsRoles.next() 即使在发生任何事情之前也会返回 false。
这是我的 table :
Name Null? Type
-------------------- -------- ----------
USER_ID_USER NOT NULL NUMBER(38)
ROLE_ID_ROLE NOT NULL NUMBER(38)
这是它的值:
USER_ID_USER | ROLE_ID_ROLE
-------------|-------------
3 | 1
3 | 2
我在oracle数据库中使用了这个查询:
SELECT user_id_user, role_id_role
FROM user_roles
WHERE user_id_user=3;
该语句返回上表,该表是正确的。尽管当我在 Java 代码中执行此操作时:
Connection conn = database.getConnection();
String getRoles = "SELECT role_id_role, user_id_user\n"
+ "FROM user_roles\n"
+ "WHERE user_id_user=?";
PreparedStatement prstm = conn.prepareStatement(getRoles);
prstm.setInt(1, ManageUsersDialogController.getEditingUser().getAccountID());
ResultSet rsRoles = prstm.executeQuery();
while (rsRoles.next()) { // returns false
int role = rsRoles.getInt("role_id_role");
switch (role) {
case 1:
checkBoxAdmin.setSelected(true);
adminWasSelected = true;
break;
case 2:
checkBoxTeacher.setSelected(true);
teacherWasSelected = true;
break;
case 3:
checkBoxStudent.setSelected(true);
studentWasSelected = true;
}
它永远不会进入 while 循环。
可能是什么问题?
最佳答案
这不起作用的原因是该表很忙。因此,我无法通过代码输入数据,也无法看到数据库中的数据(因为它没有提交,即使它说它已提交。
我遇到的解决方案是,一旦我放弃,我突然从 IDE 和数据库收到大约 10 条弹出消息,说连接已停止,所以我猜超时起作用了。
关于java - 即使在 sql Developer 中启动相同的命令有效,为什么 resultSet next 不会从我的 Oracle SQL 数据库返回任何值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56008599/