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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JDBC-Postgres, like шаблон 
:(
    Опции темы
maxlab
Дата 6.2.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте!
Help! Не пойму почему так... то ли ошибка в Postgres -JDBC-driver... то ли в моем ДНК

столкнулся с такой ситуацией. Есть запрос вида

Код

 rs = st.executeQuery("select * from test where upper(name) like '%"+txtSearchField.getText().trim()+"%' order by name");


в тестовой таблице есть строки, в поле name которых встречаются ВПЗ-23. В случае когда таблица находится на Postgres сервере Windows платформы - запрос отрабатывается безупречно. Поисковый образ "ВПЗ","ВП","ВПЗ-" и тд. Если на Linux платформе... затыкается на букве З(зе). 
Например 
ВП - есть результат
ВПЗ - нет результата
ВПЗ- -есть результат

на обоих платформах версия 8.1.5 локаль С кодировка UNICODE (utf-8)
Windows платформа - w2003 server
Linux платформа Mandriva 2006 PowerPack+ (2.6.12 kernel)
Железо идентичное.

Как победить?
--------------------
Удивительное рядом... но оно запрещено!
PM MAIL   Вверх
Бонифаций
Дата 6.2.2007, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а через psql этот запрос нормально отрабатывается с линукса?



--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
tux
Дата 6.2.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



В Linux PostgreSQL использует для работы со строками текущую локаль (в Windows вероятно тоже). Попробуй поставить ru_RU.UTF8. Информация с достоверностью процентов 70, не совсем уверен. В свое время была такая проблема, до конца не разобрался.
PM MAIL Skype GTalk Jabber YIM   Вверх
val_vp
Дата 7.2.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 15.11.2006
Где: Днепродзержинск

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



hi, поробуй экранировать одиночные кавычки




PM MAIL WWW   Вверх
val_vp
Дата 7.2.2007, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 15.11.2006
Где: Днепродзержинск

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



Или вот еще - попробуй в свойствах соединения задавать кодировку
props.setProperty("encoding","KOI8-R");

я токо что сделал тоже самое и все работает - кодировка Базы данных koi8
ASPlinux 11 - локаль koi8-r
к предыдущему своему посту - без экрана кавычек ничего не получилось  smile 

вот стенд
postgresql-server-8.0.6
$ psql exam_engine
Код

INSERT INTO subjects (title, tab, pid) VALUES('ВПЗ-01', 'ВПЗ', 222);
SELECT * from subjects where title like '%ВПЗ%';

ВПЗ-01 | ВПЗ | 222 --- проверка - вывод успешный
Код

Class.forName("org.postgresql.Driver");
url="jdbc:postgresql://127.0.0.1:5432/exam_engine";
props = new Properties();
props.setProperty("user","user");
props.setProperty("password","password");
props.setProperty("encoding","KOI8-R");
conn = DriverManager.getConnection(url, props);
...
String sst="ВПЗ-";
st = conn.createStatement();
String query = "SELECT title,tab from subjects where title like \'%"+sst+"%\';";
rs = st.executeQuery(query);
while(rs.next()) {
    System.out.println(rs.getString(1));
    System.out.println(rs.getString(2));
}

$ ~vp/jdk1.5.0_08/bin/java -cp ~vp/jpr/postgresql-8.0-317.jdbc3.jar:. DBConnect
Вот такой вывод
ВПЗ-01
ВПЗ

другие локали не пробовал
PM MAIL WWW   Вверх
tux
Дата 7.2.2007, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



val_vp, попробуй ради эксперимента проделать тоже самое с базой в UNICODE. Интересно, это только у меня такие проблемы были или нет.
PM MAIL Skype GTalk Jabber YIM   Вверх
val_vp
Дата 7.2.2007, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 15.11.2006
Где: Днепродзержинск

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



tux, у меня в юникоде тоже ни хэ не выводит че-то smile 
может виноват postgres - у меня rpm-ка может ее без уникода собрали

PM MAIL WWW   Вверх
tux
Дата 7.2.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



Цитата(val_vp @  7.2.2007,  14:16 Найти цитируемый пост)
может виноват postgres - у меня rpm-ка может ее без уникода собрали

Вряд ли. Я и из пакетов ставил (в Debian) и сам собирал, результат один. В общем надо разбираться, в документации у них об этом ни слова.

Добавлено @ 14:25 
Как раз хотелось уйти от базы в KOI8 (набора символов было недостаточно), но без смены локали ничего не вышло. Что-то здесь все-таки не так.
PM MAIL Skype GTalk Jabber YIM   Вверх
maxlab
Дата 7.2.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



о... тут уже бурное обсуждение smile

в кои8 у меня тоже заработало... но нужен уникод
работает без экранов smile вот реальный запрос из процедуры поиска

Код

            rs = st
                    .executeQuery("select rowid,isdel,artno,name from items where upper(name) like upper('%" + arg.trim() + "%') order by name");



Может stompedo(гносеолог) подскажет... smile

Это сообщение отредактировал(а) maxlab - 7.2.2007, 14:58
--------------------
Удивительное рядом... но оно запрещено!
PM MAIL   Вверх
val_vp
Дата 9.2.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 15.11.2006
Где: Днепродзержинск

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



а вот что интересно у maxlab, че-то исчет и даже выводит пусть и не все, а  у меня ничего не выводит
Цитата

Поисковый образ "ВПЗ","ВП","ВПЗ-" и тд. Если на Linux платформе... затыкается на букве З(зе). 
Например 
ВП - есть результат
ВПЗ - нет результата
ВПЗ- -есть результат


а данные в таблицу кто заносит (psql или иной клиет )?
я честно когда  юникодную кодировку задал базе мог при вводе через psql запущенный в Kosole с выставленным юникодом че-то не так ввести. 
PM MAIL WWW   Вверх
maxlab
Дата 12.2.2007, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(val_vp @ 9.2.2007,  18:16)
а данные в таблицу кто заносит (psql или иной клиет )?

Данные заносил Java клиент. Точнее, сначала я из 1С в XML формате выгрузил справочник Номенклатуры, а затем через DOM залил в postgres
--------------------
Удивительное рядом... но оно запрещено!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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