【发布时间】:2021-11-26 04:51:52
【问题描述】:
我正在连接数据库,我想使用回调进行查询,所以我写了这个:
public void query(String query, Consumer<ResultSet> callback, String database) throws SQLException {
Connection connection;
try { Class.forName(DRIVER_CLASS); }
catch (Exception e) { e.printStackTrace(); }
connection = DriverManager.getConnection(URL + "/" + database, USER, "");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
callback.accept(resultSet);
connection.close();
}
public void printUsernames() throws SQLException {
query("SELECT username FROM users;", (ResultSet set) -> {
while (set.next()) {
String username = set.getString("username");
System.out.println(username);
}
}, "cloud");
}
即使是 query 和 printUsernames 方法也很难
都声明了一个 throws 语句,我传递的消费者
在printUsernames 中仍然给出编译错误(我被警告我没有处理它可能的 sql 异常)。
有没有办法处理消费者异常
query 这样我就不必为任何其他查询一遍又一遍地编写try-catch?
【问题讨论】:
-
您得到的错误究竟是什么?
-
线程“main”java.lang.Error 中的异常:未解决的编译问题:在 main.ConnectDB.main(ConnectDB.java:41) 在 main 方法中我'我只是创建一个新的 ConnectDB 并在 try-catch 中调用
printUsernames。 -
是否有错误消息明确指出这与未捕获的 SQL 异常有关?
-
是的;我的编辑器突出显示
set.next和set.getString(在printUsernames内)通知我未处理的异常类型SQLException