读书人

执行SQL语句错误

发布时间: 2012-02-20 21:18:23 作者: rapoo

执行SQL语句异常
以下这个方法有什么问题吗?

//---------------------------------
bool TForm1::Update(AnsiString str)
{
int res ;

if ( this->ADOQuery1->Active ) {

this->ADOQuery1->Close() ;

}

try {

this->ADOQuery1->SQL->Clear() ;

this->ADOQuery1->SQL->Add(str) ;

res = this->ADOQuery1->ExecSQL() ;

this->ADOQuery1->Open() ;

return res > 0 ; //SQL语句正确并且执行成功,当却出异常?

}
catch ( ... ) {

ShowMessage("异常");

return false ;

}

}

[解决办法]

探讨
  int res ;

... 
 
    res = this->ADOQuery1->ExecSQL() ;

    this->ADOQuery1->Open() ;

    return res > 0 ; //SQL语句正确并且执行成功,当却出异常?

...
}

[解决办法]
ADOQuery1->ExecSQL()与ADOQuery1->Open()不要同时出现,这些是由SQL语句确定的。

ExecSQL()没有返回值,如果你是在记录集有记录时返回真值,这样的写法并不好,在SQL语句中用查询查找出符合条件的记录条数,Select Count(*) As num From Table1 Where "条件"。根据Query1->FieldByName("num")->AsInteger的值判断返回的值。
[解决办法]
探讨
    res = this->ADOQuery1->ExecSQL() ;

    this->ADOQuery1->Open() ;

读书人网 >C++ Builder

热点推荐