powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ResultSet
17 сообщений из 17, страница 1 из 1
ResultSet
    #34037062
Denker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
У меня такой вопрос. Знает ли кто-нибудь можно ли использовать ResultSet, после закрытия коннекта?
У меня на практике не получилось, этого сделать. Как только закрывается коннект, так и все попытки работать с этим объектом кончаются неудачей.
У меня в принципе стоит такая задача, нужно выбрать данные по определенному запросу и закрыть коннект, а потом уже работать с результатом выборки может есть какой-то другой способ?
Или на каких принципах, постороить свой объект ResultSet? можно ли обойтись без массивов?
Поделитесь опытом пожалуйста.
Заранее огромное спасибо!
...
Рейтинг: 0 / 0
ResultSet
    #34037087
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denker можно ли использовать ResultSet, после закрытия коннекта?

Нельзя.

Делай свой custom ResultSet, в котором сначала вся выборка будет накачиваться в массив.
Или в массив и оттуда просто брать.
...
Рейтинг: 0 / 0
ResultSet
    #34037102
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таких случаях удобно использовать шаблон Data Access Object (DAO).
...
Рейтинг: 0 / 0
ResultSet
    #34037120
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
он же Denker можно ли использовать ResultSet, после закрытия коннекта?

Нельзя.

Делай свой custom ResultSet, в котором сначала вся выборка будет накачиваться в массив.
Или в массив и оттуда просто брать.
Зачем? Нужно взять дрова удовлетворяющие JDBC 3.0. Та это уже есть (CachedRowSet по моему называется).
...
Рейтинг: 0 / 0
ResultSet
    #34037232
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm
Зачем? Нужно взять дрова удовлетворяющие JDBC 3.0. Та это уже есть (CachedRowSet по моему называется).
Насчет JDBC 3 не в курсе :)
Если там можно - это гуд.
...
Рейтинг: 0 / 0
ResultSet
    #34037573
Denker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CachedRowSet действительно есть в 3.0! сейчас поищу jdbc для своей базы.
СПАСИБО!
...
Рейтинг: 0 / 0
ResultSet
    #34037646
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потребляет ли CachedRowSet какие-либо ресурсы БД после того, как он выбран полностью? Сталкивался с пулом конектов Oracle, который не отдавал заново коннект, если я его возвращал в пул с незакрытыми простыми ResultSet'ами.
...
Рейтинг: 0 / 0
ResultSet
    #34037687
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis PopovПотребляет ли CachedRowSet какие-либо ресурсы БД после того, как он выбран полностью? Сталкивался с пулом конектов Oracle, который не отдавал заново коннект, если я его возвращал в пул с незакрытыми простыми ResultSet'ами.
На то он и cached, чтобы не потреблять :)
...
Рейтинг: 0 / 0
ResultSet
    #34038158
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm Denis PopovПотребляет ли CachedRowSet какие-либо ресурсы БД после того, как он выбран полностью? Сталкивался с пулом конектов Oracle, который не отдавал заново коннект, если я его возвращал в пул с незакрытыми простыми ResultSet'ами.
На то он и cached, чтобы не потреблять :)

CachedRowSet тупо копирует в цикле содержимое ResultSet только затем чтобы потом с ним работать как с обычным ResultSet. Не понимаю зачем эти лишние пересылки.
...
Рейтинг: 0 / 0
ResultSet
    #34038233
Denker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть файлик rowset.jar.
Не понимаю в описании написано прописать путь. Хорошо, прописан.
Теперь в строке
Код: plaintext
CachedRowSet crs =  new  CachedRowSetImpl();
возникает exeption.
Объясните почему?
Сами классы CachedRowSet, и CachedRowSetImpl есть и java их видит, то есть если написать
import com.sun.rowset.CachedRowSetImpl;
import javax.sql.rowset.CachedRowSet;
то java понимает и находит эти классы начинает ругаться только при создании объекта. то есть конкретно на строчке
Код: plaintext
CachedRowSet crs =  new  CachedRowSetImpl();
, проверено дебагером.
Помогите плиз. Очень нужно.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
 E SRVE0026E: [Servlet Error]-[Logon]: java.lang.NullPointerException
	at java.io.Reader.<init>(Reader.java(Inlined Compiled Code))
	at java.io.InputStreamReader.<init>(InputStreamReader.java(Inlined Compiled Code))
	at java.util.Properties.load(Properties.java(Compiled Code))
	at javax.sql.rowset.spi.SyncFactory.initMapIfNecessary(SyncFactory.java: 371 )
	at javax.sql.rowset.spi.SyncFactory.getInstance(SyncFactory.java: 557 )
	at com.sun.rowset.CachedRowSetImpl.<init>(CachedRowSetImpl.java: 224 )
	at ant.Selection.selectuser_testcashers(Selection.java: 512 )
	at ant.Logon.doPost(Logon.java: 42 )
	at javax.servlet.http.HttpServlet.service(HttpServlet.java: 760 )
	at javax.servlet.http.HttpServlet.service(HttpServlet.java: 853 )
	at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java: 110 )
	at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java: 174 )
	at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java: 313 )
	at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java: 116 )
	at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java: 283 )
	at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java: 42 )
	at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java: 40 )
	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java: 983 )
	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java: 564 )
	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java: 200 )
	at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java: 119 )
	at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java: 276 )
	at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java: 71 )
	at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java: 182 )
	at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java: 334 )
	at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java: 56 )
	at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java: 618 )
	at com.ibm.ws.http.HttpConnection.run(HttpConnection.java: 439 )
	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java: 672 )
...
Рейтинг: 0 / 0
ResultSet
    #34038553
guest2006
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код в студию.
возможно где нибудь что нибудь забыли/пропустили
...
Рейтинг: 0 / 0
ResultSet
    #34038593
Denker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где уж тут пропустишь, не первый раз с базой то работаю.
Но все же вот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 
Connection con = connect();
//       connect() возвращает созданный коннект к базе данных
String	s = "SELECT * FROM WFE.WF_USERS ";
PreparedStatement ps = preparedst(con, s);
ResultSet rs =  null ;
  try {
	CachedRowSet crs =  new  CachedRowSetImpl();
         rs =ps.executeQuery();  
	 crs.populate(rs);
         con.close();        
           while  (crs.next())
	   {...
            }
  catch (SQLException e){
System.out.println("-> Exeption e= "+e.getMessage());
				 }
Вот код, а exeption вылезает на строке CachedRowSet crs = new CachedRowSetImpl();
причем если ее разбить на
Код: plaintext
1.
CachedRowSet crs =  null ;
crs =  new  CachedRowSetImpl();
, то exeption вылазиет на crs = new CachedRowSetImpl();
Может я какой то не тот rowset.jar использую.
Подскажите откуда еще закачать можно jdbc 3.0 для db2.
...
Рейтинг: 0 / 0
ResultSet
    #34039204
Denker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может у кого есть все же соображения почему при создании объекта возникает exeption?
...
Рейтинг: 0 / 0
ResultSet
    #34039233
guest2006
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скорее всего проблема с файликом rowset.jar
Попробуйте скачать другие версии. возможно даже более старые.

Вот у товарищей похожие проблемы:
http://forum.java.sun.com/thread.jspa?threadID=444943
http://forum.java.sun.com/thread.jspa?tstart=0&forumID=48&threadID=540108&trange=15
http://forum.java.sun.com/thread.jspa?forumID=423&messageID=2620130&threadID=540624

Ссылка на rowset'ы http://java.sun.com/products/jdbc/download.html
п.с. и не забыть прописать путь к нему в CLASSPATH, хотя Вы это вроде как сделали.
...
Рейтинг: 0 / 0
ResultSet
    #34039434
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще всё-таки было самому написать обертку %)
Три часа работы :)
...
Рейтинг: 0 / 0
ResultSet
    #34039562
Denker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо так и делаю!
...
Рейтинг: 0 / 0
ResultSet
    #34040557
rikman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не жава-гуру, поэтому ниже пишу как для себя:

вчера пробовал in-memory базу данных hsqldb, написанную на жава,
и после того как успешно отработали тестовые примеры решил ради
интереса проверить работу CachedRowSet. Скачал jdbc_rowset_tiger-1_0_1-mrel-ri.zip
Заработало с первого раза без каких либо exception'ов. jdk1.5
поставил jdk1.4 - и вуаля - NullPointerException.
Решил разобраться до конца(про hsqldb естественно уже забыл ну ниче еще потестю ее).
Проблема оказалась в недорабтке референсной реализации SUN - товарищи опять забыли про то что помимо англоговорящих стран есть и другие :) Т.е. проблема в локали.

Решений нашлось два:

1. Просто меняем локаль с русской на английскую.
как в линухе поменять локаль не помню :( , вот для винды:
Идем в [Control Panel] в раздел [Regional and Language Options]
На вкладке [Regional Options] правим раздел Standards and formats
c Russian на English(United States). Запускаем нашу программку - никаких ошибок :)

Правда это решение мне не очень нравится. Второе лучше:

2. Добавляем в архив rowset.jar файлик RowSetResourceBundle_RU.properties
Для этого: открываем rowset.jar winrar'ом, заходим а папку com\sun\rowset
копируем на рабочий стол файл RowSetResourceBundle.properties. переименовываем
его в RowSetResourceBundle_RU.properties и копируем обратно в окно винрара.
Если винрара под рукой нет - распаковываете rowset.jar любым архиватором поддерживающим ZIP,
затем также заходите в папку com\sun\rowset , выполняете выше описанные действия, затем выходите в корень исходной папки и пакуете jar'ом(входит в jdk): jar -c com javax > ../rowset.jar

Если нужна поддержка других локалей, то просто добавляете файлики RowSetResourceBundle_<Ваша локаль>.properties
текущую локаль можно посмотреть так:

import java.util.Locale;
...
Locale locale = Locale.getDefault();
String country = locale.getCountry();
System.out.println(country);

Если понадобится rowset.jar с уже включеным RowSetResourceBundle_RU.properties, то могу выслать на мыло.
P.S. Извиняюсь если через чур подробно, но порой лучше описать более детально.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ResultSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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