首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清理重复设置和清理Java(JDBC)代码

清理重复设置和清理Java(JDBC)代码
EN

Stack Overflow用户
提问于 2009-07-19 22:26:17
回答 5查看 1.8K关注 0票数 5

我有太多的方法重复做类似这样的事情

代码语言:javascript
复制
Statement stmt = null;
ResultSet rstmt = null;
try {
    stmt = conn.createStatement();
    rstmt = stmt.executeQuery(...);
    while (rstmt.next()) {
        //handle rows
    }


} catch (SQLException e) {
    //handle errors

} finally {
    try {rstmt.close();} catch (SQLException ex) {}
    try {stmt.close();} catch (SQLException ex) {}
}

语句和结果集的这种设置/销毁/清理是重复的,并且隐藏了有趣的代码片段。

有没有什么模式或习惯用法来处理这个问题(不引入任何外部框架)?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-19 23:37:22

您可以创建一个接收SQL查询的方法和一个处理ResultSet的对象。例如:

代码语言:javascript
复制
private void executeSql(String sql, ResultSetHandler handler) {
  Statement stmt = null;
  ResultSet rstmt = null;
  try {
    stmt = conn.createStatement();
    rstmt = stmt.executeQuery(sql);
    while (rstmt.next()) {
      handler.handle(rstmt);
    }
  }
  catch (SQLException e) {
    //handle errors
  }
  finally {
    try {rstmt.close();} catch (SQLException ex) {}
    try {stmt.close();} catch (SQLException ex) {}
  }
}

使用ResultSetHandler作为接口:

代码语言:javascript
复制
public interface ResultSetHandler {
  void handle(ResultSet rs) throws SQLException;
}

您可以创建一个实现该接口的匿名类的对象,这样它就不会太混乱了。

票数 4
EN

Stack Overflow用户

发布于 2009-07-19 22:40:08

看看Spring Framework中的SimpleJDBCTemplate。这就是你想要的。

如果你不想引入一个外部框架,那么就用它来激发实现你自己的灵感吧。

票数 10
EN

Stack Overflow用户

发布于 2009-07-19 22:33:35

你想要的是Execute Around习惯用法。

你可能想问一下'What is the "Execute Around" idiom?'

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1151050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档