Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > PreparedStatement опциональные параметры


Автор: zomber 3.6.2011, 14:53
пытаюсь писать на JDBC

как сделать необязательный параметр типа long ?

при попытке написать

Код

String id = "";

...

lStmt.setLong(1, Long.parseLong(id));


падает с ошибкой number format exception если строка пустая

почему id строка - не спрашивайте
на самом деле оно берется из внешнего источника
и там тип сменить нельзя
 

Автор: Skipy 3.6.2011, 15:23
Как Вы себе представляете синтаксис SQL-запроса с необязательным параметром?

Автор: AntonSaburov 3.6.2011, 16:04
Можно сформировать строку для PreparedStatement на лету в зависимости от набора параметров. Но это обычно не требуется при разумном проектировании.

Автор: zomber 3.6.2011, 16:05
имеется ввиду, что в параметр передается null

пустая строка например спокойно проходит

и oracle воспринимает её именно как null

а вот как с long быть непонятно
преобразовывать типы в самом запросе очень не хочется

Автор: LSD 3.6.2011, 16:23
1.Модератор: Название темы должно отражать ее суть!

2. 
Цитата(zomber @  3.6.2011,  17:05 Найти цитируемый пост)
и oracle воспринимает её именно как null

это особенность Оракла, что пустая строка и null это одно и то же.

3. Какое условие должно быть в случае постой строки? is null?

Автор: zomber 4.6.2011, 03:25
Цитата(LSD @ 3.6.2011,  16:23)
1.Модератор: Название темы должно отражать ее суть!

2. 
Цитата(zomber @  3.6.2011,  17:05 Найти цитируемый пост)
и oracle воспринимает её именно как null

это особенность Оракла, что пустая строка и null это одно и то же.

3. Какое условие должно быть в случае постой строки? is null?

в запросе стоит

" where .... and id = ? or id is null"

Автор: zomber 4.6.2011, 04:16
всё, я сам разобрался

просто давно jdbc не ковырял
забыл про существование setNull


Автор: dorogoyIV 4.6.2011, 14:05
Цитата(Skipy @  3.6.2011,  15:23 Найти цитируемый пост)
Как Вы себе представляете синтаксис SQL-запроса с необязательным параметром?

а как ты думал?
тут у меня такие гении мышления есть...
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)