CB的数据库组件ADOQuery的问题?
ADOQuery什么时候用Open(),什么时候用ExecSQL(),什么时候需要Close()呢?
如果查询结果显示在一个DBGrid中,选中其中的一条记录要删除,如何定位这条记录呢?比如记录的主键是xh(学号)。
[解决办法]
ExecSQL用于不返回结果集的SQL语句,像含有Insert、Update、DELETE、INTO等关键字的SQL语句使用ExecSQL方法;
Open用于返回结果集的SQL语句,如SELECT等关键字使用Open方法。
Close在你重置ADOQuery控件的内容或状态时最好使用,某些情况下看似不使用也可以,但极有可能特定时候出错
[解决办法]
如果直接选中了DBGrid中的行,那么有两种方法删除这条记录,
一种是热键和控件法,DBGrid控件默认有删除记录的热键,关联有DBNavigator控件的话DBNavigator上有删除按钮
另一种是代码法:ADOQuery1->Delete();
[解决办法]
Delete是删除了数据库记录,当前DBGrid也跟着刷新了
[解决办法]
比如有个for循环,代码如何定位到每一行?
for (ADOQuery1->First(); !ADOQuery1->Eof; ADOQuery1->Next())
{
// ...
// ...
// ...
}
多谢!如果我在DBGrid选择了连续或者不连续的2行,ADOQuery1如何取这2行呢?
TDataSet* ds = DBGrid1->DataSource->DataSet;
for (int i = 0; i < DBGrid1->SelectedRows->Count; i++)
{
ds->GotoBookmark(DBGrid1->SelectedRows->Items[i]);
// ...
// ...
// ...
}