Очистите повторяющуюся установку и Java очистки (JDBC) код

Если Вы хотите разумно обработать недостающие параметры, можно сделать что-то как:

IF %1.==. GOTO No1
IF %2.==. GOTO No2
... do stuff...
GOTO End1

:No1
  ECHO No param 1
GOTO End1
:No2
  ECHO No param 2
GOTO End1

:End1
5
задан nos 19 July 2009 в 22:26
поделиться

5 ответов

вы можете создать метод, который получает запрос SQL, и объект для обработки ResultSet . например:

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 , являющимся интерфейсом:

public interface ResultSetHandler {
  void handle(ResultSet rs) throws SQLException;
}

, и вы можете создать объект анонимного класса, реализующий этот интерфейс, чтобы он не загромождал слишком много.

4
ответ дан 18 December 2019 в 08:30
поделиться

Взгляните на SimpleJDBCTemplate в Spring Framework. Это именно то, что вам нужно.

Если вы не хотите вводить внешний фреймворк, просто используйте его как источник вдохновения для реализации своего собственного.

10
ответ дан 18 December 2019 в 08:30
поделиться

Вам нужна идиома «Выполнить вокруг».

Вы можете спросить «Что такое идиома« Выполнить »?» .

(И если вы как диаграммы ASCII: мой блог на тему «Факторизация обработки исключений» )

4
ответ дан 18 December 2019 в 08:30
поделиться

Вам следует пересмотреть использование менеджеров сохраняемости Java как iBatis и Hibernate. Это автоматизирует большую часть шаблонов. Я использовал iBatis, где все операторы SQL аккуратно упакованы и названы в файлах XML, а объем кода должен составлять около 25% от исходного подхода JDBC. Вы можете постепенно реорганизовать свою систему для использования iBatis.

1
ответ дан 18 December 2019 в 08:30
поделиться

Хотя он не устраняет логику установки и отключения, я часто предпочитаю этот стиль, чтобы сделать взаимодействие JDBC более приятным:

Statement statement = connection.createStatement();
try {
    ResultSet results = statement.executeQuery(...);
    try {
        while (results.next()) {
            //handle rows
        }
    } finally {
        results.close();
    }
} finally {
    statement.close();
}

Путем вложения попытки блоков, вы автоматически гарантируете, что для обоих результатов и оператора будут вызываться их методы close () , не прибегая к try / ] catch в вашем блоке finally . Кроме того, запустив блоки try сразу после получения ваших объектов, вам не нужно беспокоиться о проверке значений null (если, конечно, не connection.createStatement () или statement.executeQuery (... ) return null - в этом случае у вас большие проблемы).

0
ответ дан 18 December 2019 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: