![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| maxlab |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 22.11.2006 Репутация: нет Всего: нет |
Здравствуйте.
В документации на JDBC драйвер PostgreSQL (v. 8.1) тексты запросов выглядят например так "Select RowId from Table1" ... мне же приходится в строку запроса втыкать дополнительно слеш и кавычки... например так "select \"RowId\" from \"OKEI\" where \"Name\"='"+ jComboBox.getSelectedItem().toString().trim()+ "'") Почему? В противном случае выскакивает исключение что колонка с таким именем не найдена или таблицы не существует. Хотя, с другой стороны, запросы через дрова от MS$ для SQL2000 работают без дополнительных знаков препинания Где грабли? --------------------
Удивительное рядом... но оно запрещено! |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 24 Всего: 144 |
Сроду с таким не сталкивался. Дрова использовал родные постгресовские начиная с 7.3. Поэтому уточни следующее:
|
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
По всей видимости когда таблицы создавались имена полей задавались также в кавычках. Тогда имена становятся зависимыми от регистра. Попробуй пересоздать таблицы, убрав кавычки в скрипте создания.
|
|||
|
||||
| maxlab |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 22.11.2006 Репутация: нет Всего: нет |
Легко!
где dbcon - статическая public переменная типа Connection в главном классе приложения Соединение добываю следующим кодом
драйвер: postgresql-8.1-407.jdbc3.jar структура таблицы
Добавлено @ 21:13
Я все таблицы создаю в pgAdmin III --------------------
Удивительное рядом... но оно запрещено! |
||||||||
|
|||||||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 24 Всего: 144 |
Ну, теперь понятно в чем дело? Убери кавычки и пересоздай базу.
|
|||
|
||||
| maxlab |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 22.11.2006 Репутация: нет Всего: нет |
Вот... блин... незадача. А нигде про это не написано вроде
Спасибо за ответы. Тема закрыта --------------------
Удивительное рядом... но оно запрещено! |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 24 Всего: 144 |
||||
|
||||
| serious |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 15.2.2003 Где: Пенза Репутация: 1 Всего: 1 |
Надо эскейпить строку, которую подставляешь в запрос. Иначе, существует опасность SQL Injection. -------------------- Я знаю то, что ничего не знаю, а некоторые не знают и этого. |
|||
|
||||
| maxlab |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 22.11.2006 Репутация: нет Всего: нет |
А вот отсюда помедленней пжалста.... Что значит заэскейпить строку? И что такое Injection. --------------------
Удивительное рядом... но оно запрещено! |
|||
|
||||
| batigoal |
|
||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Потенциально твой jComboBox.getSelectedItem().toString().trim() может содержать что-то вроде такого: some_name'; update users set password = "hacker_password''; -- rest of line commented И тогда итоговый запрос примет вид:
Поэтому лучше бы заэранировать кавычки и апострофы внутри строки. Это сообщение отредактировал(а) batigoal - 8.12.2006, 10:35 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||
|
|||||
| maxlab |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 22.11.2006 Репутация: нет Всего: нет |
Здравствуйте!
Возвращаясь к напечатанному... Никак не пойму какими средствами можно обработать след.ситуацию... Имеем символьный поток (не важно откуда). Процедура выделяет строки из потока и пишет в поле Text . Если проскочит предложение с апострофом... сразу кирдык. Я понимаю что нужно апостроф "заэкранировать"... но как сделать это эффективней. Посимвольный разбор строки не катит, медленно... Может в JDBC что либо готовое есть? Подскажите плз хоть откуда копать --------------------
Удивительное рядом... но оно запрещено! |
|||
|
||||
| serious |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 15.2.2003 Где: Пенза Репутация: 1 Всего: 1 |
Используй готовые решения. Например, org.apache.commons.lang.StringEscapeUtils.
Добавлено @ 17:23 Так или иначе все сводится именно к посимвольному разбору. -------------------- Я знаю то, что ничего не знаю, а некоторые не знают и этого. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Используй подстановочные параметры в PreparedStatement и не надо будет ничего экранировать.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Присоединяюсь. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
![]()
|
| Правила форума "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. |