|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
Проблема что называется "не ждали". Информация типа "String" может быть типа COMPANY INT ' L Соответственно подпав под код типа Код: plaintext 1.
Syntax error (missing operator) in query expression "COMPANY INT'L",next field='lala...... Использовать одинарную кавычку логически не запрещено, запретить я это вообще не могу, ибо инфо для поля берется вообще из внешнего источника. Пофиксил пока путем замены ' на пробел при исходном считывании, но чувствую что это лажа и может стукнуть в любом месте. Потому как например если the'Vasja то от the Vasja не убудет, а если это mailto:the'Vasja@bossserver.com, то "the Vasja" черта с два получит этот mailto при таком методе затыкания. Т.е. как грамотно это лечить? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 05:17 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
Поскольку в mdb, то ответ здесь - http://www.sql.ru/faq/faq_topic.aspx?fid=157 2. Использование строк ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 08:10 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
мона и правда просто заменить на пробел или лучше пустую строку. от The Vasja не убудет, а в почтовых адресах вроде изначально незя юзать эту ковычку и остальные символы, из-за которых может произойти путанница. т.е. врят ли найдётся почта the'Vasja@bossserver.com ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 13:26 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
mds_world, Вы вот на это намекаете? Код: plaintext 1. 2.
И использовать везде, где составляются SQL-expressions c конструкциями Код: plaintext
" Код: plaintext
=== > а в почтовых адресах вроде изначально незя юзать эту ковычку и остальные символы мало чего в RFC написано. Дураками одинаково могут быть и программисты, и пользователи. Подозреваю что в мыле то как раз это очень даже и может быть использовано. Отклонение от стандартов не должно являться поводом для вылета проги. Если в русском апостроф обычно не используют, то для француза это милое дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 13:47 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
Подозреваю что в мыле то как раз это очень даже и может быть использовано.Для этого должны столкнуться лбами три дурака — пользователь, юзающий апострофы в адресе, и разработчики почтового клиента и почтового сервера, не пресекающие это дело. И даже в этом случае остальные, умные почтовики, уважающие rfc, будут резать письма с кривыми адресами, даже если кривой клиент распространился далее чем на компьютер своего разработчика. В общем, такая ситуация не жизненна. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 14:00 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
Дмитрий77, вы правы, только что послал этому зевасе письмо, ограничений нет, значит такая почта вполне может существовать. но это редкость, т.к. большинство людей пользуется стандартными массовыми почтовиками(майл, рамблер, яндекс), которые запрещают использовать эти знаки. большинство бесплатных сайтов также запрещают использовать некоторые символы. насчёт французов хз, не пробовал, не знаю ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 14:09 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
Antonariyпользователь, юзающий апострофы в адресе, и разработчики почтового клиента и почтового сервера, не пресекающие это дело. И даже в этом случае остальные, умные почтовики, уважающие rfc, будут резать письма с кривыми адресами, В общем, такая ситуация не жизненна. По крайней мере правильно получить отбой (в логе) от "умного почтовика, уважающего rfc" а не crash моей программы от некорректного SQL запроса. Не так ли? В моем случае удаленный (не юзающий прогу человек) в идентификаторе своего факса FaxID написал именно типа COMPANY INT'L -название своей компании и имел на это полное право. И моральное, и согласно RFC для FaxID. Он дурак? Думаю нет. Прога эту строку залогировала в БД, и при след. запросе тупо использовала WHERE ...field = 'COMPANY INT'L'. И соотв. вылетела. Причем, будучи запущенной как "сервис NT" (естественно через 3D-сторонний компонент, не самому же сервисы на VB писать), на экран ничего не выдавала. И спасибо кастомеру, что пустил меня через RDP "глянуть на ето" и у меня хватило мозгов понять причину. Можно конечно искажать данные пробелами или пустыми местами. Но во-первых, это свинство - искажать название компании, а во-вторых, заранее неизвестно на какого дурака/не дурака, на какое RFC, и в каком поле нарвешься. Посему таки потратил время и во всех запросах и местах поменял str на DblApo(str), даже там где ' по определению не может быть. И очень надеюсь что правильно сделал, и еще буду проверять в других компонентах проги. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 16:05 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
Дмитрий77И очень надеюсь что правильно сделал, и еще буду проверять в других компонентах проги. Да, правильно. Обращение к любому текстовому значению в запросе, которое содержит не подконтрольные проге данные, должна обязательно содержать удвоение апострофов или кавычек (кто чем пользуется). Кстати, на этой ошибке программиста часто основан взлом методом инъекций - слыхал о таком? То бишь кто-то умышленно вносит в тот же email апостроф, а после него несколько sql-команд. Например DROP DATABASE. Твоя прога ничтоже сумняшеся выполняет этот запрос и ОПА! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 17:12 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
Самое правильное это добавлять/редактировать данные через рекордсет. rs("field").value = стопицотапострофов и нулевая вероятность нарушения синтаксиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 17:14 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
т.е. в качестве решения решили заменить не одинарные ковычки в названии компании, а ковычки-границы в текстовом поле? или я неправильно понял... например, 'the'vasja' заменили на '''the'vasja''' ? но тада ведь при имени the'''vasja в поле '''the'''vasja''' тоже будет ошибка... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 18:25 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
> Автор: BelowZero > или я неправильно понял... Да. Правильно использовать параметры, тогда нет головной боли с спец-символами Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 18:29 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
AntonariyСамое правильное это добавлять/редактировать данные через рекордсет. rs("field").value = стопицотапострофов и нулевая вероятность нарушения синтаксиса. Раньше я только так и делал, ибо по-другому не умел. Видите ли, в моем случае это означает еще раз сесть и переписать все управление данными. Я имплементировал БД и решил использовать SQL-запросы + execute (спасибо Shocker.Pro, подсказал про execute). Я думаю фикса с удвоением кавычек достаточно. Особенно если учесть что проблема всплыла лишь через 3 месяца после релиза с указанной ошибкой, т.е. вероятность "столкновения 3-х дураков" действительно ничтожно мала. Но тем не менее столкновение наконец произошло, следствие было проведено и открученная гайка найдена и приварена. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2011, 11:47 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
всетаки потратьте время и перепишите через параметры а то есть такое понятие как SQL-injection если продукт коммерческий, то это плохо ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2011, 08:20 |
|
Использование одинарных кавычек ( ' ) в mdb + SQL-запросы
|
|||
---|---|---|---|
#18+
HandKot, у меня в БД секретностей нет. Она используется исключительно для удобства как компонент проги и на локальном компе, в ней нет и по определению не может быть "секретных данных". Раньше вообще использовались txt-файлы. Вылет программы из за досадной ошибки с апострофом- плохо. А чего ради городить огород? И потом я достаточно долго боролся с синхронным обновлением базы (динамика критична), я не уверен что если я напереписываю коды, то не придется опять сидеть и "фиксить" кучу других неинтересных (но критичных для проги) проблем. Оно мне надо? Мне гораздо более важно внедрять новые идеи и ф-ции за кот. люди готовы платить. Ну да, всякие стили и внешний вид также важны, изуродованная VB6-256цветная классика негативно действует на психику юзера на win7 или висте, но вроде основные приемы освоили (и продолжаем осваивать). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2011, 09:58 |
|
|
start [/forum/topic.php?fid=60&msg=37350442&tid=2158555]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 135ms |
0 / 0 |