HOWTO: SQL Server Identity, OLE DB Templates and OLE DB for ODBC

ID: Q194678


The information in this article applies to:
  • Microsoft Visual C++, 32-bit Editions, version 6.0


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"


Additional query words: kbDSupport

Keywords : kbDatabase kbODBC kbProvider kbVC600 kbATL300 kbConsumer kbGrpVCDB
Version : winnt:6.0
Platform : winnt
Issue type : kbhowto


Last Reviewed: November 23, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.