Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java Базы данных (JDBC, JPA, Hibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2010, 20:35   #1
Lemon2009
Пользователь
 
Аватар для Lemon2009
 
Регистрация: 29.07.2009
Сообщений: 72
Вопрос java + mysql

Здравствуйте.

Хочу использовать два запроса. но возникают ошибки:

Код:
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM `cms_bot_users`");
while (rs.next()) {
    ResultSet rsud = st.executeQuery("SELECT * FROM `cms_bot_ud` WHERE `id`=" + rs.getString("id"));
    System.out.println("Name: "+rs.getString("name")+' '+"Balance: "+rsud.getString("balance"));
}
Совершенство в простоте
Lemon2009 вне форума Ответить с цитированием
Старый 09.03.2010, 00:27   #2
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от Lemon2009 Посмотреть сообщение
Здравствуйте.

Хочу использовать два запроса. но возникают ошибки:

Код:
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM `cms_bot_users`");
while (rs.next()) {
    ResultSet rsud = st.executeQuery("SELECT * FROM `cms_bot_ud` WHERE `id`=" + rs.getString("id"));
    System.out.println("Name: "+rs.getString("name")+' '+"Balance: "+rsud.getString("balance"));
}
Может быть message и stacktrace исключений покажете?
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 09.03.2010, 12:27   #3
Lemon2009
Пользователь
 
Аватар для Lemon2009
 
Регистрация: 29.07.2009
Сообщений: 72
По умолчанию

Код:
        Exception in thread "Thread-0" java.lang.NullPointerException
        at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1072)
        at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5488)
        at chatserver.WorkSpace.run(WorkSpace.java:64)
        at java.lang.Thread.run(Thread.java:619)
Такая ошибка.

64 строка в WorkSpace:
Код:
System.out.println("Name: "+rs.getString("name")+' '+"Count_msg: "+rsud.getString("count_msg"));
этот тот же код, что на первом сообщение, но Balance изменил на count_msg

===========================

всё, ошибку исправил. Добавив rsud.next() и для второго запроса создав новую копию Statement.

Вопрос задается: Для каждого запроса нужно создавать отдельный createStatement() ?

Замечание модератора: оверпостинг запрещен!
Совершенство в простоте

Последний раз редактировалось alexinspir; 09.03.2010 в 13:21.
Lemon2009 вне форума Ответить с цитированием
Старый 09.03.2010, 13:19   #4
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от Lemon2009 Посмотреть сообщение
Вопрос задается: Для каждого запроса нужно создавать отдельный createStatement() ?
Документацию не читали? видимо стоит прочесть.

каждый Statement имеет при себе только один ResultSet объект, при попытке получить другой ResultSet объект, первый автоматом закрывается. Сам по себе ResultSet обычно делают очень хитро - он НЕ содержит всю запрошенную информацию из базы, а динамически подгружает ее из базы данных по мере необходимости. Там еще много интересностей и вкусностей есть.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.

Последний раз редактировалось alexinspir; 09.03.2010 в 13:23. Причина: уточнение
alexinspir вне форума Ответить с цитированием
Старый 09.03.2010, 13:41   #5
Lemon2009
Пользователь
 
Аватар для Lemon2009
 
Регистрация: 29.07.2009
Сообщений: 72
По умолчанию

Док-и читал, но видимо статьи про это пропустил или не понял.
спасибо большое за информацию.
Совершенство в простоте
Lemon2009 вне форума Ответить с цитированием
Старый 09.03.2010, 14:20   #6
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от http://java.sun.com/javase/6/docs/api/java/sql/Statement.html
public interface Statement extends Wrapper

The object used for executing a static SQL statement and returning the results it produces.

By default, only one ResultSet object per Statement object can be open at the same time. Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects. All execution methods in the Statement interface implicitly close a statment's current ResultSet object if an open one exists.
вот, собственно.
Цитата:
спасибо большое за информацию.
незачто, приятно приятно встретить человека, который пытается не только решать проблемы, но и стремится понимать их причины
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
инсталлятор (java проект+бд mysql) roger Общие вопросы по Java, Java SE, Kotlin 9 19.08.2009 12:26
обновление в блоге - Работа с MySQL в С++ с использованием библиотеки mysql++ Pblog Обсуждение статей 0 16.08.2009 16:00
MySQL нужна библ. для Visual C++ (MySql++) Alexoid Visual C++ 8 07.05.2008 18:29