CRecordset::Delete

virtual void Delete();
  throw(CDBException);

说明:
此成员函数用来删除当前记录。在成功删除之后,此记录集的字段数据成员被设置为NULL值,并且应用程序必须显式地调用一个Move函数来移走所删除的记录。一旦移走了被删除的记录,就不能再恢复它。如果数据源支持事务,则可以使Delete调用成为一次事务的一部分。
注意:
如果你已经实现了成组读取,则不能调用Delete。这会导致一个失败断言。虽然类CRecordset不提供用于更新成组数据行的机制,但是你可以使用ODBC API函数SQLSetPos来编写你自己的函数。有关如何做到这一点的例子,请参见DBEFETCH示例。
警告:
当你调用Delete时,记录集必须被更新,并且当前在记录集中必须有有效的记录;否则将发生错误。例如,如果你删除了一个记录,但是在你再次调用Delete之前没有滚动到一个新的记录,则Delete会抛出一个CDBException。与AddNew和Edit不同,Delete调用后不跟Update调用。如果Delete调用失败,字段数据成员将保持不变。

示例:
这个例子说明了如何在一个函数框架上创建一个记录集。该例子假定m_dbCust存在,一个CDatabase类型的成员变量已经连接到数据源上。
// 创建一个派生的CRecordset对象
CCustSet rsCustSet( &m_dbCust );
rsCustSet.Open( );
if( rsCustSet.IsEOF() || !rsCustSet.CanUpdate() || !rsCustSet.CanTransact() ) return;
if( !m_dbCust.BeginTrans( ) )
{
  // Do something to handle a failure
}
else
{
  // Perhaps scroll to a new record ...
  // Delete the current record
  rsCustSet.Delete( );
  // ...
  // Finished commands for this transaction
  if( )
    m_dbCust.CommitTrans( );
  else // User changed mind
    m_dbCust.Rollback( );
}
// ...

请参阅:
CDatabase::BeginTrans, CDatabase::CommitTrans, CDatabase::Rollback, CDBException