回答

收藏

JDBC返回空结果集

技术问答 技术问答 170 人阅读 | 0 人回复 | 2023-09-13

我正在使用JDBC实现非常简单的数据库连接。/ M5 k: g: |& ~
我创建了连接/句子并进行查询。我在调试器中检查句子的查询对象,以确认它正在发送正确的查询。然后,我再次检查数据库中的查询(直接从调试器中复制),以确保其返回数据。然而,返回结果集中在.next()上给出false
4 S; U: }$ ^' n& `3 T- z这里有我遗漏的常见陷阱吗?+ \8 X$ m! X8 w) T/ J) Z2 n
myDB));               return returnList;   catch (SQLException e)              e.printStackTrace();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;return null;   myDB));        }         return returnList;    } catch (SQLException e) {        e.printStackTrace();        return null;    }}还有myDB类(一个简单的包装程序使我能够将连接/语句代码放入任何项目)
" y4 }: _  x6 [8 b2 mpublic void sendQuery(String query){    this.query = query;    try              if(statement == null)              statement = connection.createStatement();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;results = statement.executeQuery(query);   catch (SQLException e)              System.out.println(query);        currentError = e;        results = null;        printError(e,"querying");   public ResultSet getResults(){     return results;}编辑:根据建议,我主要修改了我的代码,但仍然有同样的问题。以下是简化具有相同问题的代码。& X% \# j" B5 }( B  m+ R
private boolean attemptLogin(String uName,String pWord)    ResultSet results;    try{          try            Class.forName("oracle.jdbc.driver.OracleDriver");      catch (ClassNotFoundException e)            e.printStackTrace();             connection =DriverManager.getConnection(connectionString,user,password);        PreparedStatement statement = connection.prepareStatement("select username from users where username='testuser'");        results = statement.executeQuery();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;if(results != null && results.next()){              System.out.println("found a result");            statement.close();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;    return true;             System.out.println("did not find a result");        statement.close();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;return false;    }catch(SQLException e){          e.printStackTrace();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;return false;   我了消除错误的来源,我还对查询进行了硬编码。与以前相同的问题(所有查询都会发生)。调试器显示所有实例对象,不打印堆栈跟踪。此外,我可以在不同的项目中使用相同的代码(以及上面列出的更复杂的代码)。! W3 d2 n9 Z$ s' Y0 }3 I4 t
                                                               
. S5 I* z) c( F6 T; ^& Y% \7 s8 d    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则