gpt4 book ai didi

java - JDBC 返回空结果集

转载 作者:太空狗 更新时间:2023-10-29 22:42:16 26 4
gpt4 key购买 nike

我使用 JDBC 进行非常简单的数据库连接。

我已经创建了我的连接/语句并执行了一个查询。我在调试器中检查语句的查询对象以确认它正在发送正确的查询。然后我仔细检查了数据库上的查询(直接从调试器复制)以确保它返回数据。然而,返回的结果集在 .next() 上给出 false

这里有没有我遗漏的常见陷阱?

public List<InterestGroup> getGroups() {
myDB.sendQuery("select distinct group_name From group_members where
username='" + this.username + "'");
ResultSet results = myDB.getResults();
List<InterestGroup> returnList = new ArrayList<InterestGroup>();
try {
while (results.next()) {
returnList.add(new InterestGroup(results.getString("group_name"), myDB));
}
return returnList;
} catch (SQLException e) {
e.printStackTrace();
return null;
}

}

还有 myDB 类(简单的包装器,让我可以将连接/语句代码放入任何项目中)

public 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;
}

编辑:根据建议,我大部分修改了我的代码,但仍然有同样的问题。下面是具有相同问题的简化代码部分。

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;
}

}

我现在还对查询进行了硬编码,以消除该错误源。与以前相同的问题(所有查询都会发生这种情况)。调试器显示所有被实例化的对象,并且没有打印堆栈跟踪。此外,我能够在不同的项目中使用相同的代码(以及前面列出的更复杂的代码)。

最佳答案

我想通了....愚蠢的 Oracle 不喜欢我拥有的并发连接数(所有两个,一个用于控制台,一个用于 java)。不幸的是,服务器不在我的控制之下,所以我只能处理它。您会认为 Oracle 会提供更好的响应。相反,它只返回空结果集。

感谢回复

编辑 自从提出/回答了这个问题后,许多人指出根本原因更可能与使用中的提交/事务设置有关。请务必查看其他答案以获取更多提示和可能的解决方案。

关于java - JDBC 返回空结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4343078/

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