запрос на выборку всегда возвращает -1 при редактировании

У меня есть этот код в C ++ Builder.

void __fastcall TForm1::Button1Click(TObject *Sender)
{

AnsiString am="2323246";

Form1->ADOQuery1->SQL->Text="SELECT T_ID FROM TABLE WHERE TABLE.T_AM='"+am+"'";

Form1->Edit1->Text=Form1->ADOQuery1->ExecSQL();

}

Он всегда возвращает -1 как результат в окне редактирования, даже если я попытался другое значение для
есть. Значения существуют в моей базе данных, и если я пытаюсь выполнить запрос в моей базе данных, это работает
просто отлично и возвращает правильный идентификатор.

0

Решение

Какой тип переменной T_AM? Если это целое число или число с плавающей точкой, потерять кавычки. Кроме того, посмотрите на подготовленные запросы или заявления. Этот тип запроса уязвим для внедрения SQL. Пример:

PrepareSQL("SELECT T_ID FROM TABLE WHERE T_AM = %d", am);
ExecSQL();

Вам нужно будет проверить документацию API для точной семантики и синтаксиса для этого.

Глядя на API, вам нужно сделать что-то вроде этого:

VARIANT vName;
vName.vt = VT_BSTR; //Variant type for BSTR
vName.bstrVal = _bstr_t("2323246");

Form->ADOQuery1->Parameters->Append(
Form->ADOQuery1->CreateParameter(_bstr_t("T_AM"),adChar,adParamInput,50,vName)
);
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector