|
Тема
|
TQuery и апострофи/двойни кавички
|
|
Автор | Veso (Нерегистриран) |
Публикувано | 10.11.04 12:15 |
|
Здравейте !
Как мога да стартирам параметризирана заявка(TQuery) в параметрите на която се съдържат символите ' (39 dec) и/или " (34 dec) ? Например:
qry->SQL->Add("INSERT INTO COUNTRY (NAME, CAPITAL, POPULATION) ");
qry->SQL->Add("VALUES (:Name, :Capital, :Population) ");
qry->Params->Items[0]->AsString = "People's Republic of China"; // тук е проблема
Най лесният начин е да проверявам предварително, дали се съдържат такива символи и да ги премахвам, без да уведомя потребителя, или да изведа съответното страховито съобщение, че е въведен невалиден символ, но това не ме устройва.
Работя c C++ Builder и Paradox.
| |
Тема
|
Re: TQuery и апострофи/двойни кавички
[re: Veso]
|
|
Автор |
andrew_nikoloff (aka бах ма'а му) |
Публикувано | 10.11.04 14:12 |
|
Няма проблем стойностите на параметрите да съдържат кавички или апострофи.
С параметри спокойно можеш да напишеш нещо такова...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Query1->Close();
Query1->DatabaseName = "DBDEMOS";
Query1->SQL->Clear();
Query1->SQL->Add("select * from customer");
Query1->SQL->Add("where company = :company");
Query1->Params->Items[0]->AsString = "Davy Jones' Locker";
Query1->Open();
}
Защо смяташ, че не може да има кавички? Може ми има някакъв друг проблем... Кажи за какво става въпрос
Редактирано от andrew_nikoloff на 10.11.04 14:14.
| |
Тема
|
Re: TQuery и апострофи/двойни кавички
[re: andrew_nikoloff]
|
|
Автор | Veso (Нерегистриран) |
Публикувано | 10.11.04 15:00 |
|
Ами като търся в Google-то това е познат проблем, който се решава по следния начин:
- стринг съдържащ апостроф се въвежда така:
Query1->Params->Items[0]->AsString = "Davy Jones' Locker";
и минава
но, ако стринга съдържа двойна кавичка ще имаш проблем
напр. Query1->Params->Items[0]->AsString = "\"Davy Jones" Locker";
независимо, дали съм поставил обратно наклонена черта \ преди двойната кавичка. В този случай би трябвало да мине така:
Query1->Params->Items[0]->AsString = "\'Davy Jones\" Locker\'";
Лошото е, че не знам предварително, какво ще въведе потребителя.
| |
Тема
|
Re: TQuery и апострофи/двойни кавички
[re: Veso]
|
|
Автор |
AquilaX (познат) |
Публикувано | 10.11.04 16:02 |
|
В Delphi има функция QuotedStr() която прави стринга подходящ за SQL заявка.
AquilaX
____________
умният знае кога да говори, мъдрият знае кога да мълчи
| |
Тема
|
Re: TQuery и апострофи/двойни кавички
[re: AquilaX]
|
|
Автор | Veso (Нерегистриран) |
Публикувано | 10.11.04 16:36 |
|
Работи !!
В ВСВ-то AnsiString e реализиран като клас и няма метод QuotedStr, затова не ми е позната тази ф-я, но всички Delphi ф-ии за работа със стрингове са си налице. Благодаря много !
| |
|
|
|
|