Главная страница
    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.035 c
1-1106143494
vic1
2005-01-19 17:04
2005.01.30
ComboBox


3-1103815859
juice
2004-12-23 18:30
2005.01.30
Удаление из набора данных


1-1105891337
Qu
2005-01-16 19:02
2005.01.30
Определение цвета?


1-1105743181
P.N.P.
2005-01-15 01:53
2005.01.30
TActionMainMenuBar - Scroll


3-1103553098
Lamka
2004-12-20 17:31
2005.01.30
Фильтрация в DBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский