powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите с выборкой из БД
15 сообщений из 15, страница 1 из 1
Помогите с выборкой из БД
    #34292474
Ekaterina Boykova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем! Есть такая маленькая проблема. Надо выбрать из БД Оракла из таблицы KLPREFIKS все записи, в которых значение поля равнялось бы тому значению, которое введет пользователь. Например, пользователь ввел неполное название улицы "садова", тогда надо найти все адреса, в которых есть вот это самое "садова". Вот селект, котоый я делаю:
Код: plaintext
1.
2.
 private   static   final  String StreetQuery = "SELECT STREET.kodStreet, STREET.nameStreet" +
                      "FROM GEONIM, STREET " +
                      "WHERE (GEONIM.kod = STREET.kod) AND (GEONIM.nameStreet LIKE Upper('?%'))";
А вот код проги, где его использую:
Код: plaintext
1.
2.
3.
4.
...
PreparedStatement streetStmt = connection.prepareStatement(StreetQuery);
streetStmt.setString( 1 , street.getText());//вместо того самого вопросика ? подставляю значение, введенное пользователем
ResultSet resultSet = streetStmt.executeQuery();
...
Ничего не работает из-за этого LIKE Upper('?%')), он не видит знака вопрос из-за кавычек. Как быть?
Заранее спасибо.
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34292629
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
like upper(?)
Код: plaintext
pstmt.setString( 1 , str + "%");

или

Код: plaintext
like upper(? || '%')
Код: plaintext
pstmt.setString( 1 , str);
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34292769
Ekaterina Boykova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось!)) Timm, вы меня спасли, огромное спасибо!
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34297145
Ekaterina Boykova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще один вопрос из этой же оперы)). В запросе стоит:
Код: plaintext
WHERE number = IN(?)
В коде:
Код: plaintext
pstmt.setObject( 1 , arrayList)
В переменной arrayList хранится последовательность целых чисел.
Выдает эксепшн "java.sql.SQLException: ORA-01722: неверное число"... Подскажите что-нибудь...
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34297230
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Катя вы што?
в запросе WHERE number = IN(?) должно быть што-то типа "aaaa","bbbb","cccc" вот и приведите ваш аррай лист к такому виду.
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34297234
Ekaterina Boykova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дополняя предыдущее сообщение...
А Базе Данных поле number имеет тип VARCHAR2(15)...
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34297381
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все равно ответ такойже
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34297470
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.sql.ru/faq/faq_topic.aspx?fid=407
http://sql.ru/forum/actualthread.aspx?tid=349462#3256365

либо insert в temp таблицу (например batch'ем) и Select из нее в IN (...)
либо как уже сказали "in (a, b, c)" без биндов, но лучше так не делать.
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34305862
Ekaterina Boykova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, я уже всех, наверно, достала своей недалекостью по этой теме, но я еще новичек, так что не бейте, плиз... Не выходит с ArrayList:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 ArrayDescriptor arrayDesc = ArrayDescriptor.createDescriptor("VARCHAR2(15)", connection);//эксепшн тут
ArrayList list =  new  ArrayList();
 int [] sequence =  new   int [(first + second) /  2 ];
 for  ( int  i =  0 ; i < sequence.length; i++)  list.add(i, String.valueOf(first + i* 2 ));//формирую последовательность чисел, которую надо запизать в list
ARRAY pARRAY =  new  ARRAY(arrayDesc, connection, list.toArray());
 if  (pStmt ==  null ) pStmt = connection.prepareStatement(stringUpdate);
pStmt.setInt( 1 , Integer.parseInt(okrugNumber.getText())); 
pStmt.setInt( 2 , Integer.parseInt(getPrefActual())); 
pStmt.setArray( 3 , pARRAY); //последовательность чисел
Сделала еще по-другому, с помощью динамической строки, получилось через одно место и тоже не работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
       int [] sequence =  new   int [(first + second) /  2  -  1 ];
        String stringUpdate = "UPDATE  KLOAS_DIST " +
                "SET IzbOkrug = ? " +
                "WHERE (pref_actual = ?) AND (house = IN(";
        String str = stringUpdate;
         for  ( int  i =  0 ; i < sequence.length; i++){
             if  (i == sequence.length -  1 ) str = str + "?))";
             else  str = str + "?, ";
        }
        stringUpdate = str;
         try {
             if  (pStmt ==  null ) pStmt = connection.prepareStatement(HomesOfEvenSideOnlyUpdate);
            pStmt.setInt( 1 , Integer.parseInt(okrugNumber.getText())); 
            pStmt.setInt( 2 , Integer.parseInt(getPrefActual())); 
             for  ( int  i =  0 ; i < sequence.length; i++) pStmt.setString( 3  + i, String.valueOf(first + i* 2 ));//тоже не работает
             int  r = pStmt.executeUpdate();
            writeMessage("Обновлено " + r + " строк.");
        } catch (...){...}
В общем, если кто-нибудь сможет помочь кодом, буду очень признательна...
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34306015
The_ShadoW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задебажьте Вашу строку c SQL, выведите куда-нибудь и посмотрите, что в ней не так.

Ошибку вам выдает Оракл, проблема у Вас в синтаксисе SQL-запроса, который на Оракл улетает, а не в ява-коде.
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34306020
The_ShadoW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аддед:

ну и по тому, какой sql у вас формируется, будет видно, откуда ноги растут.
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34306038
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ekaterina Boykova...
В общем, если кто-нибудь сможет помочь кодом, буду очень признательна...
Так выше была сцылка на пример в ФАКе.
http://www.sql.ru/faq/faq_topic.aspx?fid=407
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34306155
Ekaterina Boykova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, Timm, что в строке
Код: plaintext
ArrayDescriptor arrayDesc = ArrayDescriptor.createDescriptor("VARCHAR2(15)", connection);
ему не нравится тип VARCHAR2(15), ругается на него, хотя поле, из которого я хочу вытянуть инфу, именно этого типа!
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34307146
Ekaterina Boykova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли как-то обойтись без ArrayDescriptor?...
...
Рейтинг: 0 / 0
Помогите с выборкой из БД
    #34307202
Фотография raidan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ekaterina BoykovaМожно ли как-то обойтись без ArrayDescriptor?...
Конечно можно.
Написав
Код: plaintext
1.
"WHERE number = IN(" + myParams + ")"
сформировав String myParams как "4, 5, 6, 7" или как вам нужно. ИМХО, самый универсальный способ ;)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите с выборкой из БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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