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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с запросом на выборку Prepared Statement, ОЧЕНЬ ВАЖНО!!! СРОЧНО!!!! 
V
    Опции темы
une
  Дата 19.12.2011, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.12.2011

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



Добрый день. Пытаюсь получить данные из базы данных формируя запрос через Prepared Statement. 

Вот код.
Код

   try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/db?characterEncoding=cp1251&connectionCollation=cp1251_general_ci";
            connection = DriverManager.getConnection(url, "root", "3132613");
String queryfromdb = "Select count_a From Author Where name=? And surname=?";
            preparedStatementfromdb = connection.prepareStatement(queryfromdb);
            preparedStatementfromdb.setString(1, VeryMain.newAuthor.getNameA());
            preparedStatementfromdb.setString(2, VeryMain.newAuthor.getSurname()); 
            resultSet = preparedStatementfromdb.executeQuery();  
             
            
            while (resultSet.next()) { 
            int dbDeptNumber = resultSet.getInt(1);
            VeryMain.newAuthor.setCountA(dbDeptNumber); //сюда передаём значение ячейки
            } 
        catch (ClassNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } 
        catch (SQLException e) {
        } 
        finally {
            try {
                preparedStatement.close();
                preparedStatementfromdb.close();
                connection.close();
            } 
            catch (Exception exception) {
            }
        }




Запрос формируется. Переменные передаются без ошибок. Но запрос не выполняется. Вот на этой строчке код летит. 
Код

           resultSet = preparedStatementfromdb.executeQuery();  


Ошибок не выдаёт.
В чём тут загвоздка??? 


P.S: и ещё господа, подскажите пожалуйста по поводу этого:
Код

while (resultSet.next()) { // нужно ли тут вайл если нам передаётся всего лишь одна ячейка
            int dbDeptNumber = resultSet.getInt(1);
            VeryMain.newAuthor.setCountA(dbDeptNumber); //сюда передаём значение ячейки
            } 



нужно ли мне тут использовать while если нам передаётся всего лишь одна ячейка???


Буду очень рада, если поможете   smile 

Это сообщение отредактировал(а) une - 19.12.2011, 23:31
PM MAIL   Вверх
Stolzen
Дата 20.12.2011, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

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



Запрос напишите так:
"Select count(*) From Author a Where a.name=? And a.surname=?"

While не нужно, но нужно next() вызвать, в данном случае достаточно один раз.


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
une
Дата 20.12.2011, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.12.2011

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



за пояснения про while спасибо. smile 
А вот с запросом беда, count_a - это название столбца значение, которого надо получить и передать в переменную. Попробовала еще вместо count (*) подставить count_a(*), но с этими запросами программа пропускает тот же кусок кода, в том же месте что и было раньше. 



P.S: 

From Author a Where a.name=? And a.surname=?
Мне не совсем понятна конструкция с "a" Видела это в named queries, но там выбирались все поля, например

"SELECT a FROM Author a WHERE a.country = :country"

что делать когда поле надо одно? именно такой запрос, как Вы написали? smile 
PM MAIL   Вверх
Stolzen
Дата 20.12.2011, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

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



Тогда
"Select a.count_a From Author a Where a.name=? And a.surname=?"

"a" - это alias на таблицу Author, можно прочесть про это тут или тут


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
une
Дата 20.12.2011, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.12.2011

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



Alias - то, чего мне не хватало, огромное спасибо.   smile 

по итогу для моего случая запрос оказался таким: 

 "Select a.count_a From Author a Where a.name_a=? And a.surname=?";

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

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

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


 




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


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

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