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