How to use SQL Server identity, OLE DB templates, and OLE DB for ODBC in Visual C++

Article translations Article translations
Article ID: 194678 - View products that this article applies to.
This article has been archived. It is offered "as is" and will no longer be updated.
Note Microsoft Visual C++ .NET 2002 and Microsoft Visual C++ .NET 2003 support both the managed code model that is provided by the Microsoft .NET Framework and the unmanaged native Microsoft Windows code model. The information in this article applies only to unmanaged Visual C++ code. Microsoft Visual C++ 2005 supports both the managed code model that is provided by the Microsoft .NET Framework and the unmanaged native Microsoft Windows code model.
Expand all | Collapse all

On This Page

Summary

When using the OLE DB Templates with a SQL Server database, it is often necessary to add records to a table that contains an identity column.

Getting an identity column to increment properly with the OLE DB for ODBC provider that ships with Visual C++ 6.0, Msdasql.dll, requires that the COLUMN_ENTRY_STATUS macro be used.

More information

The following sample code demonstrates how to use this macro when defining an accessor map with Visual C++ 6.0 OLE DB Consumer Templates:

Sample Code

   class CMyTableAccessor
   {
   public:
      LONG m_id;          // This is an identity column
      DWORD m_id_status;  // Status variable for id column
      TCHAR m_name[11];

   BEGIN_COLUMN_MAP(CMyTableAccessor)
     COLUMN_ENTRY_STATUS(1, m_id, m_id_status)
     COLUMN_ENTRY(2, m_name)
   END_COLUMN_MAP()

   ...
   };
				
The code to add a new record to the table would resemble the following:
   CMyTable rs;

   rs.Open();
   rs.ClearRecord();  //Null out current structure

   strcpy(rs.m_name , "New Name");
   rs.m_id_status = DBSTATUS_S_IGNORE;  //Tells the provider to ignore this
                                        // column when updating.

   rs.Insert();  // Insert new record into the table letting server update
                // of the identity column.
   rs.Close();
				

References

Please see the following topics in MSDN online documentation:

  • VC++ documentation for COLUMN_ENTRY_STATUS
  • OLE DB Topic titled "Status" defines "DBSTATUS_S_IGNORE"

Properties

Article ID: 194678 - Last Review: February 28, 2014 - Revision: 4.0
Applies to
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Data Access Components 2.5
Keywords: 
kbnosurvey kbarchive kbdatabase kbhowto kbprovider KB194678

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com