java - 为什么即使在 sql developer 中启动相同的命令有效,resultSet next 也不会从我的 oracle SQL 数据库返回任何值?
问题描述
我正在尝试从数据库中获取一个值,以便可以在 while 循环中检查它们,但 rsRoles.next() 甚至在任何事情发生之前都会返回 false。
这是我的桌子:
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 条弹出消息,说连接已停止,所以我猜 timeout 起作用了。
推荐阅读
- matlab - %A*算法中用于评估的临时矩阵
- c# - 选择堆积条形图显示的查询
- encoding - 这是什么类型的编码,它翻译成什么?}(]&[([%!"=))%%!")"
- java - Shogun 在 Linux 中缺少 java jar
- mysql - 如果我的库存中相同产品的价格相同,如何编写查询以显示数量的总和?
- android-studio - android studio错误:解析时到达文件末尾
- node.js - 如何使用 NodeJS + Unoconv 转换 PDF 文件
- android - 找不到由 java.util.NoSuchElementException 引起的符号类 DataBindingComponent
- java - Java spring jdbc:Jdbctemplate 连接查询
- python - 从 UTF-8 编码的字节字符串中读取 JSON 数据