首页 > 解决方案 > 为什么即使在 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循环。

可能是什么问题?

标签: javaoraclejdbc

解决方案


这不起作用的原因是因为说桌子很忙。所以我不能通过代码输入数据,也看不到我在数据库中的数据(因为它没有被提交,即使它说它已经被提交了。

我遇到的解决方案是,一旦我放弃,我突然从 IDE 和数据库中收到大约 10 条弹出消息,说连接已停止,所以我猜 timeout 起作用了。


推荐阅读