Почему resultSet next не возвращает никакого значения из моей базы данных Oracle oracle, хотя инициация той же команды внутри sql developer работает? - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь получить значения из базы данных, чтобы я мог проверить их внутри цикла 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.

В чем может быть проблема?

1 Ответ

0 голосов
/ 06 мая 2019

Причина, по которой это не сработало, заключалась в том, что указанный стол был занят.Поэтому я не мог вводить данные с помощью кода и не мог видеть данные, которые у меня были в базе данных (потому что они не были зафиксированы, хотя в них говорилось, что они были зафиксированы.

Решение, с которым я столкнулся, состояло в том, чтокак только я сдался, я внезапно получил около 10 всплывающих сообщений из IDE, а также из базы данных, в которых говорилось, что соединение было прервано, поэтому я думаю, что таймаут сработал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...