Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразовать для новой java / 13 сообщений из 13, страница 1 из 1
02.11.2014, 17:17
    #38794296
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
есть такое
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 try {
            con = DriverManager.getConnection(getBase, getBase_login, getBase_password);
            proc = con.prepareCall("{ call xxxx())}");
            rs = proc.executeQuery();
            rs.next;
          ..........
        } catch (SQLException ex) {
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                proc.close();
                rs.close();
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
            }
        }


а как будет выглядеть, если использовать try-with-resources?

Код: plaintext
1.
2.
3.
Нотация может использоваться для любого класса, реализующего новый интерфейс java.lang.AutoCloseable. 
Сейчас он реализуется множеством классов (InputStream, OutputStream, JarFile, Reader, 
Writer, Socket, ZipFile) и интерфейсов (java.sql.ResultSet).
...
Рейтинг: 0 / 0
02.11.2014, 18:59
    #38794329
smackmychi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
вадя, в чем проблема? В доках же все есть http://docs.oracle.com
...
Рейтинг: 0 / 0
02.11.2014, 19:28
    #38794343
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
smackmychiвадя, в чем проблема? В доках же все есть http://docs.oracle.com
только я там не смог найти...
...
Рейтинг: 0 / 0
02.11.2014, 19:29
    #38794346
smackmychi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
вадя, ОП
...
Рейтинг: 0 / 0
02.11.2014, 19:32
    #38794348
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 try (Statement stmt = con.createStatement()) {

      ResultSet rs = stmt.executeQuery(query);

      while (rs.next()) {
        String coffeeName = rs.getString("COF_NAME");
        int supplierID = rs.getInt("SUP_ID");
        float price = rs.getFloat("PRICE");
        int sales = rs.getInt("SALES");
        int total = rs.getInt("TOTAL");
        System.out.println(coffeeName + ", " + supplierID + ", " + price +
                           ", " + sales + ", " + total);
      }

    } catch (SQLException e) {
      JDBCTutorialUtilities.printSQLException(e);
    }



а как насчет con и rs ?
...
Рейтинг: 0 / 0
02.11.2014, 20:18
    #38794359
DDiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
вадя,

Вроде резалтсет закрывается вместе со стейтментом
...
Рейтинг: 0 / 0
02.11.2014, 21:25
    #38794386
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
DDiverвадя,

Вроде резалтсет закрывается вместе со стейтментом
вроде , да. где об этом можно убедиться?
давным давно где-то видел хорошее описание, но не могу найти.
но как быть с con?
...
Рейтинг: 0 / 0
02.11.2014, 21:34
    #38794392
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
вадя,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
try (Connection con = ...) {
    try (Statement proc = con.prepareCall("{ call xxxx())}")) {
        try (ResultSet rs = proc.executeQuery(...)) {
             ...
        }
    }
} catch (SQLException ex) {
    // ERROR
}
...
Рейтинг: 0 / 0
02.11.2014, 21:41
    #38794396
smackmychi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
...
Рейтинг: 0 / 0
02.11.2014, 23:05
    #38794430
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
Usmanвадя,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
try (Connection con = ...) {
    try (Statement proc = con.prepareCall("{ call xxxx())}")) {
        try (ResultSet rs = proc.executeQuery(...)) {
             ...
        }
    }
} catch (SQLException ex) {
    // ERROR
}


тогда есть ли смысл использовать try-with-resources ? наглядность кода страдает
...
Рейтинг: 0 / 0
02.11.2014, 23:10
    #38794431
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
у меня в классе методов с таким набором строк много
как по быстродействию:
создать глобальное поле на класс или в каждом методе создавать своё поле (con, proc,rs)?
...
Рейтинг: 0 / 0
02.11.2014, 23:15
    #38794433
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
а так правильно?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 try (
          Connection con = DriverManager.getConnection(getBase, getBase_login, getBase_password);
          CallableStatement  proc = con.prepareCall("{ call xxxx())}");
)
{
            rs = proc.executeQuery();
            rs.next;
          ..........
        } catch (SQLException ex) {
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        }
...
Рейтинг: 0 / 0
03.11.2014, 06:28
    #38794484
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразовать для новой java
вадяа так правильно?Синтаксически да. Но в случае, если Вы будете формировать несколько запросов
в пределах одного подключения, тогда лучше (имхо) сделать вложенные try-with-resource блоки:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
try (Connection con = ...) {
    try (Statement proc = con.prepareCall("{ call xxxx())}")) {
        try (ResultSet rs = proc.executeQuery(...)) {
             ...
        } catch (SQLException ex) {
             // rs error
        }
    }
    ...
    try (Statement ...) {
        ...
    } catch (SQLException ex) {
        // statement error
    }
    ...
} catch (SQLException ex) {
    // ERROR
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразовать для новой java / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]