尝试从 servlet 连接到 Oracle XE 时出现 ORA-01017 错误



我正在尝试编写一个用于学习目的的servlet应用程序,该应用程序连接到Oracle数据库,查询一些数据,然后将其打印到浏览器。 简单!

但是,我遇到了ORA-01017:尝试连接到本地安装和运行的Oracle XE (19c(版本时用户名/密码无效。 为了测试连接,我与系统用户建立了连接。 这是我的代码:

// 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 的无知,但是如果我独立于任何 servlet 运行以下代码,我可以连接并执行示例查询!

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);
}
}
}

我一直在谷歌上寻找解决方案,但我无法找到解决方案,所以我在这里。

我正在使用Windows 10,使用Java 1.8和Oracle 19c XE。

任何帮助都会很棒。 谢谢

好的,我终于开始工作了,但我无法解释为什么。

Oracle 19c 区分大小写,我知道这一点。 我试图禁用它,但由于它是一个折旧的功能,这似乎很快。 我将系统用户的密码更改为"system",并且可以成功连接。 "系统"作为密码继续失败。

让我感到奇怪的是,我确信我过去曾尝试使用"系统"(小写(密码。 :(

无论如何,我可能正在做一些愚蠢的事情,但至少我已经克服了驼峰。 唷!

谢谢大家!!

最新更新