Главная страница
    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.04 c
1-1105880027
Жыбазисная
2005-01-16 15:53
2005.01.30
Использование типов данных, объявленных в DLL


1-1105699374
Тов. Стёпка Жукин
2005-01-14 13:42
2005.01.30
ListBox2


1-1106199128
rosl
2005-01-20 08:32
2005.01.30
заполнение нолями


3-1104143196
CRACKISH
2004-12-27 13:26
2005.01.30
Добавление в базу!


1-1106053344
Knoxville
2005-01-18 16:02
2005.01.30
Как узнать какой элемент выбран в TListBox?





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