You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java连接Oracle查询两张表返回“未找到结果”问题排查

问题:SQL Developer执行查询正常,Java代码执行返回“Results not found”

在SQL Developer中执行同一查询语句可正常获取结果,但在Java代码中执行时却返回“Results not found”,我编写的Java代码如下:

Connection connection = null;
    
try {
    String sql1="SELECT u.FIRSTNAME, u.MOBILE, ca.STREET_ADDRESS, ca.CITY, ca.POSTAL_CODE " +
            "FROM USERS u " +
            "JOIN ADDRESSES ca ON u.ID = ca.CUSTOMER_ID " +
            "WHERE u.id = ?";
    
    
    try {
        PreparedStatement preparedStatement = connection.prepareStatement(sql1);
        
         preparedStatement.setInt(1,Id);
         
         //preparedStatement.setString(2, pswd);
        
        ResultSet resultSet = preparedStatement.executeQuery();
           
        if(resultSet.next()) {
             String userId = resultSet.getString("MOBILE");
             String un= resultSet.getString("FIRSTNAME");
             String ad=resultSet.getString("STREET_ADDRESS");
             
             System.out.println(ad);
             System.out.println(un);
             System.out.println("User ID: " + userId);
                        
        }
        else {
            System.out.println("Results not found");
# resultSet.close();
         preparedStatement.close();

排查与解决方法
  • 确保数据库连接已正确建立:代码中connection初始化为null,但缺少获取连接的逻辑(比如DriverManager.getConnection()或数据源获取),没有有效连接的话查询根本无法执行,先补充连接获取代码并验证连接成功。
  • 核对参数Id的取值:打印Id的值,确认它和你在SQL Developer中测试时使用的ID完全一致,同时检查数据库中USERS表的ID字段类型是否和setInt匹配(比如如果是字符串类型,要改用setString)。
  • 修复代码语法错误:
    • 去掉resultSet.close();前的#注释符号,改用Java标准注释//
    • 补全未闭合的try、else代码块,否则会导致执行逻辑异常
  • 添加异常捕获:在代码中加入SQLException捕获逻辑,打印异常堆栈信息,排查是否有隐藏的错误(比如参数绑定失败、权限问题等)。
  • 验证表和字段名一致性:确认数据库中表名(USERS、ADDRESSES)和字段名(ID、CUSTOMER_ID等)的大小写、拼写和代码完全一致,部分数据库对大小写敏感。

修正后的示例代码
Connection connection = null;
try {
    // 补充获取数据库连接的代码
    connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "你的用户名", "你的密码");
    
    String sql1 = "SELECT u.FIRSTNAME, u.MOBILE, ca.STREET_ADDRESS, ca.CITY, ca.POSTAL_CODE " +
                  "FROM USERS u " +
                  "JOIN ADDRESSES ca ON u.ID = ca.CUSTOMER_ID " +
                  "WHERE u.id = ?";
    
    // 使用try-with-resources自动关闭资源
    try (PreparedStatement preparedStatement = connection.prepareStatement(sql1)) {
        preparedStatement.setInt(1, Id);
        // 打印传入的ID,确认参数正确性
        System.out.println("当前查询的ID:" + Id);
        
        try (ResultSet resultSet = preparedStatement.executeQuery()) {
            if (resultSet.next()) {
                String userId = resultSet.getString("MOBILE");
                String un = resultSet.getString("FIRSTNAME");
                String ad = resultSet.getString("STREET_ADDRESS");
                
                System.out.println(ad);
                System.out.println(un);
                System.out.println("User ID: " + userId);
            } else {
                System.out.println("Results not found");
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    // 关闭数据库连接
    if (connection != null) {
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

内容的提问来源于stack exchange,提问作者AMIT PATEL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:32:56