Cómo utilizar la identidad de SQL Server, plantillas OLE DB y OLE DB para ODBC en C++

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

194678
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Nota Microsoft Visual C++ .NET 2002 y Visual C++ .NET 2003 admiten el modelo de código administrado suministrada por Microsoft .NET Framework y el modelo de código nativo no administrado de Microsoft Windows. La información de este artículo sólo se aplica al código no administrado de Visual C++.Microsoft Visual C++ 2005 admite tanto el modelo de código administrado proporcionado por Microsoft .NET Framework y modelo de código de las no administrado nativo de Microsoft Windows.
Resumen
Al utilizar las plantillas OLE DB con una base de datos de SQL Server, suele ser necesario agregar registros a una tabla que contiene una columna de identidad.

Obteniendo una columna de identidad para incrementar correctamente con el OLE DB para el proveedor de ODBC que se distribuye con Visual C++ 6.0, msdasql.dll, requiere el uso de la macro COLUMN_ENTRY_STATUS.
Más información
En el siguiente ejemplo de código muestra cómo utilizar esta macro al definir un mapa de descriptor de acceso con Visual C++ 6.0 plantillas de consumidor OLE DB:

Código de ejemplo

   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()   ...   };				
El código para agregar un nuevo registro a la tabla sería similar a lo siguiente:
   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();				
Referencias
Por favor, vea los temas siguientes en documentación en línea de MSDN:

  • Documentación de VC ++ para COLUMN_ENTRY_STATUS
  • OLE DB tema titulado "Estado" define "DBSTATUS_S_IGNORE"

Advertencia: este artículo se ha traducido automáticamente

Propiedades

Id. de artículo: 194678 - Última revisión: 02/23/2014 05:25:38 - Revisión: 3.0

  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard
  • Microsoft Visual C++ .NET 2002 Standard
  • Microsoft Visual C++ 6.0 Enterprise
  • Microsoft Visual C++ 6.0 Professional
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Data Access Components 2.5
  • kbnosurvey kbarchive kbmt kbconsumer kbdatabase kbhowto kbprovider KB194678 KbMtes
Comentarios