【发布时间】:2016-07-19 18:06:18
【问题描述】:
我正在尝试创建一个集中类来连接并返回 SQL 查询的 ResultSet,这样我就不必每次尝试获取查询时都创建新连接。
我正在使用try-with-resources,但是,每当我使用try-with-resources 时都会出现编译时错误,我不知道为什么?
public class JDBC {
// logger declaration is omitted
private static final String dbURL = "jdbc:oracle:";
private static final String userName = "blah";
private static final String password = "12345";
public ResultSet retrieveSQLQuery(String sqlQuery) {
Connection conn = null;
Statement statement = null;
ResultSet rs = null;
try (conn = DriverManager.getConnection(dbUrl, user, password);
statement = conn.createStatement();
rs = statement.executeQuery(sqlQuery)) {
} catch (SQLException e) {
logger.info(e.getMessage());
}
return rs;
}
}
【问题讨论】:
-
错误是什么?
-
@AlexandruMarina 我遇到了很多错误。一旦在 getConnection 上显示
unknown class collection和unhandle sql exceptionstatement.executeQuery(sqlQuery) -
您在关闭后返回一个结果集。这行不通。
-
@NathanHughes 嗯,那么我怎样才能创建一个可以从 sql 查询动态返回值的 jdbc 类?例如,如果我想查询一个 clob 而不是一个字符串?我不是必须返回一个 ResultSet 吗?
-
可能你的
JDBC类应该返回一个对象或集合,然后是来自ResultSet 的数据并关闭然后连接。
标签: java jdbc try-with-resources