CRecordset::Delete

删除当前记录。

virtual void Delete( );

备注

在一个成功删除后,记录集的字段数据成员设置为Null值,因此,您必须显式调用一个 Move 功能以将已删除的记录。 一旦移动已删除的记录,返回到它是不可能的。 如果数据源支持事务,可以使 Delete 调用的一部分的事务。 有关更多信息,请参见文章 事务(odbc)

备注

如果已实现批量取行,则不能调用 Delete。这导致生成失败的断言。虽然选件类 CRecordset 为更新数据批量行不提供框架,使用ODBC API函数 SQLSetPos,可以编写自己的函数。有关批量取行的更多信息,请参见文章 记录集:获取记录(odbc)

警告

记录集必须可更新的,且记录集中必须存在有效的当前记录,调用 Delete时;否则,错误。例如,因此,如果您删除记录,但不移动到新记录,在您再次之前调用 DeleteDelete 引发 CDBException

不同 AddNew编辑,对 Delete 的调用中通过对 更新的调用之后。 如果 Delete 调用失败,字段数据成员保持不变。

异常

此方法会引发类型 **CDBException***的异常。

示例

此示例显示函数的帧创建的记录集。 此示例假定 m_dbCust的存在,类型 CDatabase 的成员变量已连接到数据源。

// Create a derived CRecordset object
CCustomer rsCustSet(&m_dbCust);
rsCustSet.Open();

if(rsCustSet.IsEOF() || !rsCustSet.CanUpdate() ||
   !rsCustSet.CanTransact())
{
   return;
}

m_dbCust.BeginTrans();

// Perhaps scroll to a new record...
// Delete the current record
rsCustSet.Delete();

// Finished commands for this transaction
if(IDYES == AfxMessageBox(_T("Commit transaction?"), MB_YESNO))
   m_dbCust.CommitTrans();
else // User changed mind
   m_dbCust.Rollback();

要求

Header: afxdb.h

请参见

参考

CRecordset选件类

层次结构图

CDatabase::BeginTrans

CDatabase::CommitTrans

CDatabase::Rollback

CDBException选件类