CRowset::Insert

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at CRowset::Insert.

Creates and initializes a new row using data from the accessor.

Syntax

  
      HRESULT Insert(   
   int nAccessor = 0,   
   bool bGetHRow = false    
) throw( );  

Parameters

nAccessor
[in] The number of the accessor to use for inserting the data.

bGetHRow
[in] Indicates whether the handle for the inserted row is retrieved.

Return Value

A standard HRESULT.

Remarks

This method requires the optional interface IRowsetChange, which might not be supported on all providers; if this is the case, the method returns E_NOINTERFACE. You must also set DBPROP_IRowsetChange to VARIANT_TRUE before calling Open on the table or command containing the rowset.

Insert might fail if one or more columns is not writable. Modify your cursor map to correct this.

Example

The following example shows how to access a data source through a rowset and then insert a string using a table in that rowset.

First, create a table class by inserting a New ATL Object into your project. For example, right-click the project in the Workspace pane and select New ATL Object. From the Data Access category, select Consumer. Create a consumer object of type Table. (Selecting Table creates a rowset directly from the table; selecting Command creates a rowset through a SQL command.) Select a data source, specifying a table through which to access that data source. If you call your consumer object CCustomerTable, you would then implement your insertion code as follows:

   // Access the rowset using the wizard-generated class, CCustomerTable
   CCustomerTable rs;           // Your CTable-derived class

   // Insert a customer
   // Note that for fixed-length fields such as billing ID it isn't necessary
   // to set the length
   rs.m_BillingID = 5002;
   rs.m_dwBillingIDStatus = DBSTATUS_S_OK;

   _tcscpy_s(rs.m_ContactFirstName, sizeof(rs.m_ContactFirstName) / sizeof(TCHAR), 
      _T("Malcolm"));
   rs.m_dwContactFirstNameLength = 7;
   rs.m_dwContactFirstNameStatus = DBSTATUS_S_OK;

   _tcscpy_s(rs.m_L_Name, sizeof(rs.m_L_Name) / sizeof(TCHAR), _T("Reynolds"));
   rs.m_dwL_NameLength = 8;
   rs.m_dwContactFirstNameStatus = DBSTATUS_S_OK;

   rs.m_CustomerID = 2005;
   rs.m_dwCustomerIDStatus = DBSTATUS_S_OK;

   _tcscpy_s(rs.m_PostalCode, sizeof(rs.m_PostalCode) / sizeof(TCHAR), 
      _T("34213-4444"));
   rs.m_dwPostalCodeLength = 10;
   rs.m_dwPostalCodeStatus = DBSTATUS_S_OK;

   HRESULT hr = rs.Insert();
   if (FAILED(hr))
   {
      ATLTRACE(_T("Insert failed: 0x%X\n"), hr);
   }

Requirements

Header: atldbcli.h

See Also

CRowset Class