为了学习目的,我尝试编写一个servlet应用程序,该应用程序连接到Oracle数据库,查询一些数据,然后打印到浏览器中。很简单!
但是,在尝试连接到本地安装和运行的Oracle (19c)版本时,我遇到了ORA-01017:无效用户名/密码。为了测试连接,我是与系统用户的连接。这是我的密码:
// 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进行连接,而不存在任何问题。
我愿意把这归因于我自己对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上工作,使用Java1.8和Oracle 19c XE。
任何帮助都会很好。谢谢
发布于 2020-01-23 14:21:52
好吧,我终于开始工作了,但我无法解释原因。
Oracle 19c是区分大小写的,我知道。我试图禁用它,但由于它是一个折旧功能,这似乎是快速的。我修改了系统用户的密码为" system ",我可以成功地连接。“系统”作为密码继续失败。
让我觉得奇怪的是,我确信我曾经尝试过使用"system“(小写)密码。:(
不管怎么说,我可能在做些愚蠢的事,但至少我已经度过了难关。呼!
谢谢大家!!
https://stackoverflow.com/questions/59766721
复制相似问题