(Java)SQL查询根本不返回任何内容
我的SQLite数据库有问题。切中要害:除了查询之外,一切都在工作(执行/创建表/…) 要点:autoCommit=False(但我使用的查询函数不需要它) 代码如下:(Java)SQL查询根本不返回任何内容,java,sql,database,bukkit,Java,Sql,Database,Bukkit,我的SQLite数据库有问题。切中要害:除了查询之外,一切都在工作(执行/创建表/…) 要点:autoCommit=False(但我使用的查询函数不需要它) 代码如下: ---=>Database.class Main.class问题是,您正在关闭语句,该语句将自动关闭关联的结果集: Statement statement = connection.createStatement(); ResultSet resultset = statement.executeQuery(query); st
---=>Database.class Main.class问题是,您正在关闭
语句
,该语句将自动关闭关联的结果集
:
Statement statement = connection.createStatement();
ResultSet resultset = statement.executeQuery(query);
statement.close(); // This is the problem
return resultset;
从javadoc:
关闭语句对象时,其当前ResultSet对象(如果存在)也将关闭
话虽如此,您不应该在方法周围传递ResultSet
对象。这样,管理资源将非常困难,因为您必须使用不同的方法打开语句
和结果集
对象
您应该使用获取ResultSet
的相同方法构建一些数据结构,并返回该数据结构
此外,您应该关闭
finally
块中的资源,如,结果集
,语句
,和连接
,以确保它们始终处于关闭状态,即使在出现异常的情况下。哦,我的上帝,非常感谢您!工作得很好,但我意识到SQL不区分大小写,在代码中添加对它的支持?(区分大小写的SQL查询)因为我只看到数据库端的修改!THX“但我意识到SQL不区分大小写”就列中的值而言,SQL既不区分大小写,也不区分大小写。这取决于您正在使用的RDBMS和正在使用的设置(有时是基于每列)。此外,更重要的问题是:如果我不关闭该语句,是否意味着该语句在某个地方处于空闲状态?很抱歉,默认情况下它不区分大小写没有问题。但是,如果必须首先返回结果集,如何关闭语句?:/谢谢你的帮助@用户2671258。首先,您不应该将ResultSet
作为返回值。事实上,您不应该围绕方法传递ResultSet
,或语句
。因为,那就很难管理资源了。
Statement statement = connection.createStatement();
ResultSet resultset = statement.executeQuery(query);
statement.close(); // This is the problem
return resultset;