c++ 构建器:使用 SELECT 通过 ADOQuery 获取值
c++ builder: getting values via ADOQuery using SELECT
问题是关于 delphi 编码器和 C++ 构建器编码器的问题,因为我使用的是相同的组件。
我正在尝试通过数据库中的数据在表单上填写标签。我通过 TADOQuery 进行 SELECT 查询。但是当我试图得到一个结果时,我总是得到像 "ADOQuery1: Field 'count' not found" 这样的错误。
'id' 传递给函数的是一个自动增量字段值,它完全存在于数据库中(它是通过 DBLookupComboBox 获得的)。此外,手动执行查询以在 DBGrid 中显示结果是成功的。
不带参数的查询和将 'id' 值写入查询字符串也会失败。
有什么问题?这是代码。
void TSellForm::LoadData(int id) {
TADOQuery* q = DataModule1->ADOQuery1;
q->Active = false;
try
{
q->SQL->Text = "select * from drugs where(id=:id)";
q->Parameters->ParamByName("id")->Value = IntToStr(id);
q->ExecSQL();
this->LabelAvail->Caption = q->FieldByName("count")->Value;
}
catch (Exception* e) {
MessageBox(NULL, PChar(WideString(e->Message)),
L"Exception", MB_OK|MB_ICONWARNING);
}
q->SQL->Clear();
}
ExecSQL
仅用于 SQL 没有 return 记录集的语句,并确定您使用 RowsAffected
.
的结果
对于 SELECT
语句(return 一个记录集),您使用 Open
或将 Active
设置为 true。
此外,count
是大多数 SQL 方言中的保留字(如 SELECT Count(*) FROM ...
,因此如果您有一个具有该名称的列,您将需要转义它,通常通过在它周围使用 []
或双引号,或者在 SELECT
本身中使用别名。
ADOQuery1->Close();
ADOQuery1->SQL->Text= "SELECT * FROM reportTble WHERE (firstName =:firstName) " ;
ADOQuery1->Parameters->ParamByName("firstName")->Value = textBox->Text ;
ADOQuery1->Open();
这就是您可以使用的方式 ADOQuery
问题是关于 delphi 编码器和 C++ 构建器编码器的问题,因为我使用的是相同的组件。 我正在尝试通过数据库中的数据在表单上填写标签。我通过 TADOQuery 进行 SELECT 查询。但是当我试图得到一个结果时,我总是得到像 "ADOQuery1: Field 'count' not found" 这样的错误。 'id' 传递给函数的是一个自动增量字段值,它完全存在于数据库中(它是通过 DBLookupComboBox 获得的)。此外,手动执行查询以在 DBGrid 中显示结果是成功的。 不带参数的查询和将 'id' 值写入查询字符串也会失败。 有什么问题?这是代码。
void TSellForm::LoadData(int id) {
TADOQuery* q = DataModule1->ADOQuery1;
q->Active = false;
try
{
q->SQL->Text = "select * from drugs where(id=:id)";
q->Parameters->ParamByName("id")->Value = IntToStr(id);
q->ExecSQL();
this->LabelAvail->Caption = q->FieldByName("count")->Value;
}
catch (Exception* e) {
MessageBox(NULL, PChar(WideString(e->Message)),
L"Exception", MB_OK|MB_ICONWARNING);
}
q->SQL->Clear();
}
ExecSQL
仅用于 SQL 没有 return 记录集的语句,并确定您使用 RowsAffected
.
对于 SELECT
语句(return 一个记录集),您使用 Open
或将 Active
设置为 true。
此外,count
是大多数 SQL 方言中的保留字(如 SELECT Count(*) FROM ...
,因此如果您有一个具有该名称的列,您将需要转义它,通常通过在它周围使用 []
或双引号,或者在 SELECT
本身中使用别名。
ADOQuery1->Close();
ADOQuery1->SQL->Text= "SELECT * FROM reportTble WHERE (firstName =:firstName) " ;
ADOQuery1->Parameters->ParamByName("firstName")->Value = textBox->Text ;
ADOQuery1->Open();
这就是您可以使用的方式 ADOQuery