Java 尝试从servlet连接到Oracle XE时出现ORA-01017错误
我正试图编写一个用于学习的servlet应用程序,该应用程序连接到Oracle数据库,查询一些数据,然后将其打印到浏览器。简单 但是,在尝试连接到本地安装并运行的Oracle XE(19c)版本时,我遇到了ORA-01017:无效的用户名/密码。为了测试连接,我正在与系统用户建立连接。这是我的密码:Java 尝试从servlet连接到Oracle XE时出现ORA-01017错误,java,oracle,servlets,Java,Oracle,Servlets,我正试图编写一个用于学习的servlet应用程序,该应用程序连接到Oracle数据库,查询一些数据,然后将其打印到浏览器。简单 但是,在尝试连接到本地安装并运行的Oracle XE(19c)版本时,我遇到了ORA-01017:无效的用户名/密码。为了测试连接,我正在与系统用户建立连接。这是我的密码: // http://localhost:8080/demo/ public class DemoServ extends HttpServlet { public void doGet(H
// 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();
}
}
}
我使用的用户是绝对存在的,我可以使用SQLDeveloper进行连接而不会出现问题
我愿意把这归因于我自己对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);
}
}
}
我一直在谷歌搜索解决方案,但我一直无法找到解决方案,所以我来了
我在Windows10上工作,使用Java1.8和Oracle19Cxe
任何帮助都会很好。谢谢好吧,我终于开始工作了,但我无法解释原因 Oracle 19c区分大小写,我知道。我试图禁用它,但由于它是一个被贬低的功能,这似乎很快。我将系统用户的密码更改为“system”,我可以成功连接。“系统”作为密码继续失败 让我感到奇怪的是,我确信我过去曾尝试使用“系统”(小写)密码:( 不管怎样,我可能做了些傻事,但至少我已经渡过了难关。呸
谢谢大家!!更正。为错误道歉!嗨,APC。我将连接字符串更改为您建议的,但它只生成ORA-12505,TNS:listener当前不知道SID…但是,我认为这不是问题,因为要获得上面的错误,连接一定成功了?当然如果不先建立到DB的成功连接,你就无法获得ORA-01017?我确定。我可以通过非servlet应用程序或DB环境登录,这似乎与servlet有关:(我注意到在不起作用的连接中,你将“XE”大写,而在起作用的连接中,将“XE”大写)是小写。这是一个打字错误。我尝试了两种方法,两种代码都没有区别。