select query在编辑时始终返回-1

时间:2013-07-03 10:28:26

标签: c++ sql sql-server ado c++builder

我在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 上午。这些值存在于我的数据库中,如果我尝试在我的数据库中执行查询,它就可以工作 很好,并返回正确的ID。

1 个答案:

答案 0 :(得分: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)
);