![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| FullNub |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.7.2006 Репутация: нет Всего: нет |
имеется сервлет. он представляет собой форму с опциями поиска по БД oracle. запросы выполняются с помощью preparestatement. опций поиска довольно много. как сделать так, чтобы не пришлось перебирать каждый вариант запроса?
например
|
|||
|
||||
| YuG |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 20.2.2006 Репутация: нет Всего: 4 |
Не понятно.
Попробую ответить наугад:
|
|||
|
||||
| FullNub |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.7.2006 Репутация: нет Всего: нет |
дело в том, что при установке параметра в " AND LASTNAME = ?"; может быть два случая:
1) когда пользователь передал _lastName и тогда будет что то "and lastname = 'vasia'" 2) когда пользовател не передал _lastName, тогда в _command.setString(3, _lastName); вместо _lastName нужно укать то, что будет означать " and lastname = anyone", т.е. выбирать все записи. вопрос заключает в том, что нужно запихнуть в _lastName во втором случае |
|||
|
||||
| BlackStar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 13.12.2006 Репутация: нет Всего: 5 |
Так если пользователь не передал _lastName, то тогда и не нужно добавлять в _selectFirst значение " AND LASTNAME = ?" и соответственно _command.setString(3, _lastName) тоже не надо устанавливать.
Или я не правильно понял? |
|||
|
||||
| FullNub |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.7.2006 Репутация: нет Всего: нет |
да. но так как опций поиска много, то при установке номеров параметров нужно узнавать, какие номера уже забиты. для этого нужно перебирать все варианты. извращаться с ифами, либо писать каку нить фишку. делать этого не хочется
|
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
1. Сделать в базе хранимую процедуру для поиска, в которой проверять переданные значения на NULL, и, в зависимости от результата, включать либо не включать поле в условие WHERE.
2. Использовать вместо проверки на равенство оператор LIKE. Тогда во втором случае _lastName будет равно %. Но работать LIKE будет медленнее, это надо учитывать. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |