首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

执行SQL语句错误

2012-02-20 
执行SQL语句异常以下这个方法有什么问题吗?//---------------------------------bool TForm1::Update(Ansi

执行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() ;

热点排行