Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2012, 17:36   #1
new player
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 153
По умолчанию Запись в FDB (FireBird) строк с одинарной кавычкой

Доброго,

Столкнулся с такой проблемой. Есть программка, которая берет информацию из DBF и закидывает в FDB (FireBird). При чтении из таблицы DBF попадаются строки, содеращие символ ' (одинарная ковычка). Из-за чего при записи в FDB (FireBird) возникает ошибка:

Цитата:
SQL Parse Error:
Eof in String detected
Есть мысли как этого избежать?
new player вне форума Ответить с цитированием
Старый 13.08.2012, 17:45   #2
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

заменить её на " если не принципиально.
или поиграться с ' в запросе.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 13.08.2012, 19:37   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А зачем на двойную кавычку? Спаренные одинарные в тексте запроса не в моде?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.08.2012, 06:20   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Вопрос в другом (у меня лично): а нафига в базе данных вообще применять такие символы заведомо зная, что может возникнуть проблема с их обработкой? Я вообще не сторонник хранения в базе всяких кавычек и т.п. Если что-то надо обрамить кавычками пользователю, то лучше это делать при показе записи из базы данных.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.08.2012, 08:41   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от artemavd
нафига в базе данных вообще применять такие символы заведомо зная, что может возникнуть проблема с их обработкой? Я вообще не сторонник хранения в базе всяких кавычек и т.п.
artemavd, ну, коллега, КАТЕГОРИЧЕСКИ не согласен с этим утверждением.
База данных - это отражение РЕАЛЬНОЙ ситуации. И если в какой-то предметной области, например, нужно сохранять названия предприятий, то они должны быть именно в том формате, в каком они записываются в "реальной" жизни: ОАО "Газпром" (именно с двойными кавычками). Если нужно сохранять координаты объекта, то вполне может возникнуть запись вида координаты 51°51'3845" . И их тоже надо хранить именно так и никак не иначе.
Да и вообще, в идеале, программа должна подстраиваться под нужны пользователя, а не пользователь - под нужды программиста.
А уж как данную информацию кодировать и как хранить/обрабатывать/отображать - это уже полностью в распоряжении программиста.


p.s. а вообще, обсуждение наше "про пустой мешок", ибо выше Аватар чуть выше рассказал, как данную проблему решить...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.08.2012, 09:12   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А вот я бы в этом случае как раз параметризировал запрос-вставку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.08.2012, 09:37   #7
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Вот допустим есть имя Д'Артаньян.
в Ibexperte к своему стыду я не смог составить запрос вставки
insert into table values ('Д'Артаньян')
ИМХО либо замена либо параметрами... последние я бы ещё проверил.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 14.08.2012, 09:57   #8
new player
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 153
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А зачем на двойную кавычку? Спаренные одинарные в тексте запроса не в моде?
А можно подробнее?

Цитата:
Сообщение от Stilet Посмотреть сообщение
А вот я бы в этом случае как раз параметризировал запрос-вставку.
А это как?

Цитата:
Сообщение от artemavd Посмотреть сообщение
Вопрос в другом (у меня лично): а нафига в базе данных вообще применять такие символы заведомо зная, что может возникнуть проблема с их обработкой? Я вообще не сторонник хранения в базе всяких кавычек и т.п. Если что-то надо обрамить кавычками пользователю, то лучше это делать при показе записи из базы данных.
Это уже вопрос не ко мне Я бы тоже их не использовал. Я чисто беру инфу - а какая она там не от меня зависит. К тому же, в основном двойные кавычки используются не по теме - вместо " две '

Единственная трезвая мысль, забежавшая в голову, перебирать записи на наличие одинарной ковычки. Но это скажется на скорости.
new player вне форума Ответить с цитированием
Старый 14.08.2012, 10:04   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

insert into table values ('Д''Артаньян')
Цитата:
Единственная трезвая мысль, забежавшая в голову, перебирать записи на наличие одинарной ковычки.
Покажите код обработки dbf и записи в базу
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.08.2012, 10:20   #10
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

ага так работает insert into table values ('Д''Артаньян')
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не удаляется запись. Firebird + Interbase artemavd Общие вопросы Delphi 2 08.05.2011 14:30
Firebird - fdb файл увеличивается при записи полей, но если базу очищаешь, размер остается таким же RuVarez БД в Delphi 1 23.09.2010 18:09
Запись даты в FireBird Lokos БД в Delphi 11 23.06.2010 07:53
запись пустого значения в блоб поле в FireBird Lokos БД в Delphi 0 23.06.2010 07:01