Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конекшен к базе и ResultSet 
:(
    Опции темы
Fameing
Дата 30.5.2006, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 21.2.2006
Где: Ukraine. Kiev

Репутация: 2
Всего: 2



Можно ли реализовать такую функциональность чтобы после получения ResultSet сразу закрыть соединение а потом уже отрисовивать то что било получено в ResultSet .

Просто проблема возникает с том что долго отрисовует XML пока отрисовует соединение занято. Хотелось после получения данных в ResultSet  сразу отдать соединение с пул соединение.
 
PM MAIL ICQ   Вверх
tux
Дата 30.5.2006, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(Fameing @  30.5.2006,  15:30 Найти цитируемый пост)
Можно ли реализовать такую функциональность чтобы после получения ResultSet сразу закрыть соединение а потом уже отрисовивать то что било получено в ResultSet .

Можно, вот здесь обсуждалась похожая проблема - http://forum.vingrad.ru/index.php?showtopic=57987. 
PM MAIL Skype GTalk Jabber YIM   Вверх
Fameing
Дата 30.5.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 21.2.2006
Где: Ukraine. Kiev

Репутация: 2
Всего: 2



Что-то не получается у меня или я не правильно понял ?

делаю так 

Код

                pstmt = conn.prepareStatement(SQL);
                rset = pstmt.executeQuery();
                CachedRowSet crset = new CachedRowSetImpl();
                crset.populate(rset);
                conn.close();
                pstmt.cancel(); 
                ResultSet rs = crset.getOriginal();
 while (rs.next()) {
 System.out.println(rs.getString(1));
}


получаю java.lang.NullPointerException
 
PM MAIL ICQ   Вверх
tux
Дата 30.5.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



А где именно вываливается NullPointerException? 

Вот это:
Код

ResultSet rs = crset.getOriginal();

возвращает оригинальный ResultSet (тот, из которого получили данные), а он скорее всего уже недоступен. В результате выполнения populate() вся информация из rset была перенесена в crset, вот его и используй. 
PM MAIL Skype GTalk Jabber YIM   Вверх
Fameing
Дата 30.5.2006, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 21.2.2006
Где: Ukraine. Kiev

Репутация: 2
Всего: 2



Цитата(tux @ 30.5.2006,  13:23)
А где именно вываливается NullPointerException? 

Вот это:
Код

ResultSet rs = crset.getOriginal();

возвращает оригинальный ResultSet (тот, из которого получили данные), а он скорее всего уже недоступен. В результате выполнения populate() вся информация из rset была перенесена в crset, вот его и используй.

Просто получается что crset нечего нет тоисть NULL? А почему так немогу понять. 
PM MAIL ICQ   Вверх
tux
Дата 30.5.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Честно говоря не понимаю в чем проблема... Вот, проверил у себя, все работает:
Код

Connection c = DriverManager.getConnection(
        "jdbc:postgresql://localhost/entrant", "user",
        "password");
PreparedStatement ps = c
        .prepareStatement("select person_id from person");
ResultSet originalRs = ps.executeQuery();

CachedRowSet cachedRs = new CachedRowSetImpl();
cachedRs.populate(originalRs);
originalRs.close();
c.close();
ps.cancel();
            
while (cachedRs.next()) {
    System.out.println(cachedRs.getString(1));
}
 
PM MAIL Skype GTalk Jabber YIM   Вверх
Fameing
Дата 30.5.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 21.2.2006
Где: Ukraine. Kiev

Репутация: 2
Всего: 2



а у меня на таком 
Код

 try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            String jdbcUrl = "jdbc:oracle:thin:@10.44.1.64:1521:VAL";
            String user = "******";
            String password = "*****";
            Connection conn = DriverManager.getConnection(jdbcUrl, user, password);
            System.out.println("Connection....");
            PreparedStatement ps = conn.prepareStatement("select t.username from valera.userstable t where t.username like '%Йова%'");
            System.out.println("PreparedStatement....");
            ResultSet originalRs = ps.executeQuery();
            System.out.println("ResultSet....");
            CachedRowSet cachedRs = new CachedRowSetImpl();
            System.out.println("CachedRowSet....");
            cachedRs.populate(originalRs);
            originalRs.close();
            conn.close();
            ps.cancel();
            while (cachedRs.next()) {
                System.out.println(cachedRs.getString(1));
            }
        } catch (SQLException e) {
            System.out.println(e);
        } catch (ClassNotFoundException e) {
            System.out.println(e);
        }


получаю 

Код

Connection....
PreparedStatement....
ResultSet....
java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:61)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:80)
    at java.util.Properties.load(Properties.java:266)
    at java.util.PropertyResourceBundle.<init>(PropertyResourceBundle.java:96)
    at com.sun.rowset.JdbcRowSetResourceBundle.<init>(Unknown Source)
    at com.sun.rowset.JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle(Unknown Source)
    at com.sun.rowset.CachedRowSetImpl.<init>(Unknown Source)
    at mama.main(mama.java:27)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Exception in thread "main" 
 

именно сам java.lang.NullPointerException возникает на строчке CachedRowSet cachedRs = new CachedRowSetImpl(); 

Это сообщение отредактировал(а) Fameing - 30.5.2006, 15:00
PM MAIL ICQ   Вверх
tux
Дата 30.5.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Похоже, что это баг в реализации RowSet. Посмотри сюда - http://forum.java.sun.com/thread.jspa?foru...threadID=540624, проблема уже встречалась неоднократно. Можно попробовать скачать другие версии здесь - http://java.sun.com/products/jdbc/download.html. Приаттачил еще ту версию, которая у меня, вроде работает.  

Это сообщение отредактировал(а) tux - 30.5.2006, 15:09

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  rowset.jar 105,21 Kb
PM MAIL Skype GTalk Jabber YIM   Вверх
Fameing
Дата 30.5.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 21.2.2006
Где: Ukraine. Kiev

Репутация: 2
Всего: 2



Замена версии не помогла. 
PM MAIL ICQ   Вверх
Fameing
Дата 30.5.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 21.2.2006
Где: Ukraine. Kiev

Репутация: 2
Всего: 2



Помогла только такая строчка !
установка региона 

Код

Locale.setDefault (Locale.US); 
 

Это сообщение отредактировал(а) Fameing - 30.5.2006, 16:20
PM MAIL ICQ   Вверх
Fameing
Дата 1.6.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 21.2.2006
Где: Ukraine. Kiev

Репутация: 2
Всего: 2



Только теперь начала возникать ошибка 

Код

 java.sql.SQLException: Invalid scale size. Cannot be less than zero


в запросе нет полей с null или пустых  
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.