gpt4 book ai didi

java - Java 代码和 Oracle 数据库服务器 : but no connection error 中的查询结果不同

转载 作者:行者123 更新时间:2023-12-03 19:07:23 24 4
gpt4 key购买 nike

我有连接到远程 oracle 11g EE 数据库服务器的 java 代码。如果我在 sqlplus 中运行特定查询,它会返回一个结果

SQL> SELECT COURSENAME from COURSES where skillID=1;

COURSENAME
--------------------
basic

但是如果我从下面的 java 代码运行相同的查询,它不会返回任何结果。我可以从 java 调试器的 query 变量中复制查询语法并在 oracle 上运行它,这样我就知道查询没有语法问题。此外,它不是 SQL 异常或未找到类异常,因此它似乎成功运行了查询——只是返回零结果。

可能发生了什么?

    private String getCourseForSkill(int skillID){
try{
Class.forName("oracle.jdbc.OracleDriver");
String query="SELECT COURSENAME from COURSES where skillID=" + skillID ;
con = DriverManager.getConnection(url, user, password);
Statement stmt = con.createStatement();
rs = stmt.executeQuery(query);
rs.next();
return rs.getString("COURSENAME");
}
catch (ClassNotFoundException ex){
System.out.println(ex.getMessage());
}
catch (SQLException ex) {
System.out.println(ex.getMessage());
}
return null;
}

最佳答案

  1. 我认为您正在连接到不同的 Oracle 实例,或者更可能是在这两种情况下作为不同的 Oracle 用户连接

    @GreyBeardedGeek the URL looks like "jdbc:oracle:thin:@website:port:orcl I get to the manual query by doing ssh@website, authenticating and then running command=sqlplus

    运行更安全 sqlplus <username>/<password>@<orainstancename> ,因为你可以显式指定oracle实例ID。在您的情况下,您的程序似乎正在使用 jdbc 连接 jdbc:oracle:thin:@website:port:orcl ,因此您的 orainstancename 将是“orcl” - 只需确保您的 tnsnames.ora 文件具有实例“orcl”与 jdbc 连接使用的相同的“端口

  2. 如何调试更多

    运行以下代码:

    con = DriverManager.getConnection(url, user, password);
    con.setAutoCommit(false);
    String insert="INSERT INTO COURSES (SKILLID, COURSE)"+ // can add other columns
    "values (?, ?) );" // add ? for other columns
    PreparedStatement ps = con.createPreparedStatement();
    ps.setInt(1, 999);
    ps.setString(2, "Complete Bullwarks");
    // can set other columns
    ps.executeUpdate(insert);
    con.commit();

    现在手动连接,重新运行您原来的选择语句并查看添加的行是否存在。如果 java 中没有错误并且 Oracle 中没有新行:极有可能您正在使用 2 个不同的 Oracle 实例/模式。

    还可以重新运行您的原始 java 选择代码,但使用 SkillID=999 - 极有可能它会起作用。

干杯

关于java - Java 代码和 Oracle 数据库服务器 : but no connection error 中的查询结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15952590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com