Ошибка ORA-01017 при попытке подключиться к Oracle XE из сервлета - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь написать приложение сервлета для учебных целей, которое подключается к базе данных Oracle, запрашивает некоторые данные и затем распечатывает их в браузере. Просто!

Однако у меня ORA-01017: неверное имя пользователя / пароль при попытке подключения к установленной и работающей версии Oracle XE (19 c) ). Ради тестирования соединения я подключаюсь к пользователю системы. Вот мой код:

// http://localhost:8080/demo/
public class DemoServ extends HttpServlet {

    public void doGet(HttpServletRequest req,HttpServletResponse res)
    throws ServletException,IOException {

        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1523:xe", "system", "SYSTEM");

            con.close(); 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Пользователь, которым я пользуюсь, абсолютно существует, и я могу без проблем подключиться с помощью SQL Developer.

Я был бы готов объяснить это своим собственным незнанием Java, но если я запускаю следующий код независимо от какого-либо сервлета, я могу подключиться и выполнить пример запроса!

public class DataReader {

    public static void main (String [] args) {

        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");

            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1523:xe", "system", "SYSTEM");

            Statement statement = con.createStatement();
            ResultSet rs = statement.executeQuery("SELECT count(*) num FROM dual");

            if (rs.next()) {
                int i = rs.getInt("num"); // get first column returned
                System.out.println("number: " + i);
            }
            rs.close();
            statement.close();
            con.close();
        }
        catch (Exception e) {
            System.out.println(e);
        }
    }
}

Я искал в Google решения для этого, но мне не удалось найти решение, поэтому вот я.

Я работаю над Windows 10, используя Java 1.8 и Oracle 19 c XE.

Любая помощь будет отличной. Спасибо

1 Ответ

0 голосов
/ 23 января 2020

Хорошо, я наконец-то go это сработало, но я не могу объяснить, почему.

Oracle 19 c чувствительна к регистру, что я знал. Я попытался отключить это, но, поскольку это устаревшая функция, это казалось быстрым. Я изменил пароль для системного пользователя, чтобы он был «системным», и я могу успешно подключиться. «СИСТЕМА» в качестве пароля продолжает давать сбой.

Что меня удивляет в этом, так это то, что я уверен, что пытался использовать «системный» (строчный) пароль в прошлом. : (

Во всяком случае, я, вероятно, делал что-то глупое, но, по крайней мере, я получил по горбу. Фу!

Спасибо всем !!

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