IRowsetFastLoad::InsertRow (Native Client OLE DB 访问接口)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

重要

已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中移除 SQL Server Native Client(通常缩写为 SNAC)。 不建议在新的开发工作中使用 SQL Server Native Client OLE DB 提供程序(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。 此后请切换到新的 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server

将行添加到大容量复制行集中。 有关示例,请参阅使用 IRowsetFastLoad 大容量复制数据 (OLE DB)使用 IROWSETFASTLOAD 和 ISEQUENTIALSTREAM 将 BLOB 数据发送到 SQL Server (OLE DB)

语法

  
HRESULT InsertRow(  
      HACCESSOR hAccessor,  
      void* pData);  

参数

hAccessor[in]
定义大容量复制的行数据的取值函数句柄。 引用的取值函数为行取值函数,将绑定包含数据值的使用者拥有的内存。

pData[in]
指向包含数据值的使用者所拥有内存的指针。 有关详细信息,请参阅 DBBINDING 结构

返回代码值

S_OK
方法成功。 所有列的任何绑定状态值都具有值 DBSTATUS_S_OK 或 DBSTATUS_S_NULL。

E_FAIL
出现了错误。 从行集的错误接口中发出错误信息。

E_INVALIDARG
pData 参数设置为 NULL 指针 。

E_OUTOFMEMORY
SQLNCLI11 无法分配足够的内存来完成请求。

E_UNEXPECTED
对以前被 IRowsetFastLoad::Commit 方法作废的大容量复制行集调用了该方法。

DB_E_BADACCESSORHANDLE
使用者提供的 hAccessor 参数无效 。

DB_E_BADACCESSORTYPE
指定的取值函数不是行取值函数,或者未指定使用者拥有的内存。

备注

将使用者数据转换为列的SQL Server数据类型时出错,会导致SQL Server Native Client OLE DB 访问接口返回E_FAIL。 可以通过任何 InsertRow 方法或只通过 Commit 方法将数据传输到 SQL Server 。 在使用者应用程序收到存在数据类型转换错误的通知之前,它可以用错误数据多次调用 InsertRow 方法 。 因为 Commit 方法可确保使用者正确指定所有数据,所以使用者可在必要时使用 Commit 方法适当地验证数据 。

SQL Server Native Client OLE DB 访问接口大容量复制行集是只写的。 SQL Server Native Client OLE DB 访问接口不公开任何允许使用者查询行集的方法。 若要终止处理,使用者可以在不调用 Commit 方法的情况下释放其对 IRowsetFastLoad 接口的引用 。 没有用于进行以下操作的设备:访问行集中使用者插入的行、更改其值或从行集中逐一删除该行。

大容量复制行在 SQL Server 的服务器上进行了格式化。 可能已针对连接或会话(例如 ANSI_PADDING)设置的任何选项均会影响行格式。 对于通过 SQL Server Native Client OLE DB 访问接口建立的任何连接,此选项默认设置为 on。

另请参阅

IRowsetFastLoad (OLE DB)