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