[英]ORA-01017 error when attempting to connect to Oracle XE from servlet
我正在尝试编写一个用于学习目的的 servlet 应用程序,该应用程序连接到 Oracle 数据库,查询一些数据,然后将其打印到浏览器。 简单的!
但是,我在尝试连接到本地安装和运行的 Oracle XE (19c) 版本时遇到了ORA-01017: invalid username/password 。 为了测试连接,我与系统用户连接。 这是我的代码:
// 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);
}
}
}
我一直在 Google 上搜索此问题的解决方案,但一直找不到解决方案,所以我来了。
我正在 Windows 10 上工作,使用 Java 1.8 和 Oracle 19c XE。
任何帮助都会很棒。 谢谢
好的,我终于开始工作了,但我无法解释原因。
Oracle 19c 区分大小写,我知道。 我试图禁用它,但由于它是一个贬值的功能,这似乎很快。 我把系统用户的密码改成“system”,就可以连接成功了。 “SYSTEM”作为密码继续失败。
对此让我感到奇怪的是,我确信我过去曾尝试使用“系统”(小写)密码。 :(
无论如何,我可能正在做一些愚蠢的事情,但至少我已经克服了困境。 呼!
谢谢大家!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.