Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Вниз

Преобразование форматной строки SQL-запроса   Найти похожие ветки 

 
kai ©   (2005-01-15 21:40) [0]

пишу форматную строку:
Format("UPDATE Dates SET Name = ""%s"" WHERE ID = %s",
       [_Caption, GUIDToString(_ID)]));
если в строке _Caption встречаются форматные символы, например, апостроф, %s, %d, etc, то, естественно, получается ошибка.
есть ли стандартные функции по преобразованию строк-полей в строки, отличные от форматных?
Спасибо.


 
Palladin ©   (2005-01-15 21:52) [1]

для TQuery см. свойство Params, для наследника TCustomADODataSet см. свойство Parameters


 
kai ©   (2005-01-15 22:04) [2]

спасибо.
а если я пользуюсь TADOConnection.Execute - где параметры задавать?


 
Palladin ©   (2005-01-15 22:08) [3]

нигде, используй TADOQuery, он наследник TCustomADODataSet... если выставишь свойство Prepared, то выполнение будет еще быстрее...


 
kai ©   (2005-01-15 22:15) [4]

я быструю выборку получаю таким способом (как на королевстве описано):

RecordSet := ADOConnection.Execute(...);
DatArray := Recordset.GetRows(...);
ну и VarArrayGet для получ. значения....

а через query такой высокой скорости не удается добиться...
вот и хотел узнать, либо как параметры задать, либо как строку специальным образом форматнуть.


 
kai ©   (2005-01-15 22:17) [5]

или можно тот же recordset взять из ADOQuery?


 
sniknik ©   (2005-01-15 22:19) [6]

ну вот любят люди себе на голову геморой искать... ;), ну что стоит положить компонент? он же ничего не добавит (даже размера) т.к. все одно неявно создается...

> где параметры задавать?
попробуй в событии onWillExecute когда Command уже сформирован.

p.s. в отличии от > Palladin ©   (15.01.05 22:08) [3] я сторонник "естественных" компонент ADOCommand и ADODataSet в отличии от "искуственных" (для совмещения со старыми) ADOQuery и ADOTable, их и советую использовать.


 
kai ©   (2005-01-15 22:21) [7]

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


 
sniknik ©   (2005-01-15 22:23) [8]

kai ©   (15.01.05 22:15) [4]
> ...
kai ©   (15.01.05 22:17) [5]
> или можно тот же recordset взять из ADOQuery?

легко и аналогично из ADOCommand, можно даже без промежуточного сохранения рекордсета.

чтото вроде
DatArray := ADOCommand.Execute.GetRows(...);


 
kai ©   (2005-01-15 22:30) [9]

спасибо большое! :beer: :beer:


 
VMcL ©   (2005-01-15 23:18) [10]

>>kai ©  (15.01.05 21:40)

Запоздало, но отвечу.

>если в строке _Caption встречаются форматные символы, например, апостроф,

QuotedStr(), AnsiQuotedStr()


 
sniknik ©   (2005-01-16 00:06) [11]

VMcL ©   (15.01.05 23:18) [10]
не поможет. без параметров используя логику как в [0] вставляя строку прямо в запрос, не поможет.
QuotedStr это же просто обрамление кавычками (будто их в [0] нет...), и в чем разница если такая же кавычка но в середину строки затесалась? в результирующем(то что в движок уйдет) получим
UPDATE Dates SET Name = "а это наша с"трока, типа caption" ....
(или тоже но с " вместо ")
это уже в движке ексепт вызовет, а вот параметру пофигу.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
14-1105344544
Delirium
2005-01-10 11:09
2005.01.30
ZIP-код


10-1082451010
Dmitrij_K
2004-04-20 12:50
2005.01.30
Word Basic


1-1105731289
Gear
2005-01-14 22:34
2005.01.30
Сравить два массива.


1-1105931121
Добавить
2005-01-17 06:05
2005.01.30
Как преобразовать коды нажимаемых клавиш в слова и обратно ?


1-1105979185
Arm79
2005-01-17 19:26
2005.01.30
вопрос по синтаксису Object Pascal





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский