CRecordset::AddNew

为添加新记录准备到表。

virtual void AddNew( );

备注

必须调用 再次查询 成员函数以确定新添加的记录。 记录的字段最初为Null。 (在数据库术语,并不意味着“具有值”并与在C++中 NULL。)若要完成此操作,必须调用 更新 成员函数。 Update 保存到数据源的更改。

备注

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

使用记录集的字段数据成员,AddNew 准备一个新的,空记录。 在调用 AddNew后,设置要在记录集的字段数据成员所需的值。 (您无需为此调用 编辑 成员函数;对于现有记录仅使用 Edit。)当您对的后续调用 Update时,在字段数据成员的已更改值在数据源中保存。

警告

如果移动到新记录,在调用 Update之前,新记录丢失,因此,未给出警告。

如果数据源支持事务,可以使 AddNew 调用的一部分的事务。 有关事务的更多信息,请参见选件类 CDatabase。 请注意您应在调用 AddNew之前调用 CDatabase::BeginTrans

备注

对于动态集,新记录添加到记录集为最后一条记录。添加的记录不会添加到快照;必须调用 Requery 刷新记录集。

调用 Open 成员函数未调用的记录集 AddNew 是非法的。 CDBException 引发调用,则无法追加的记录集 AddNew。 您可以确定记录集是否通过调用 CanAppend是可更新的。

有关更多信息,请参见以下文章: 记录集:如何记录集更新记录(odbc)记录集:添加,更新和删除记录(odbc)事务(odbc)

异常

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

示例

参见中的文章 事务:在记录集中执行事务(odbc)

要求

Header: afxdb.h

请参见

参考

CRecordset选件类

层次结构图

CRecordset::Edit

CRecordset::Delete

CRecordset::Update

CRecordset::Requery

CDatabase::BeginTrans

CDBException选件类