HOWTO:SQL Server 識別、OLE DB 樣板與 OLE DB for ODBC

本文曾發行於 CHT194678
本文已封存。本文係以「現狀」提供且不會再更新。
結論
當您搭配 SQL Server 資料庫使用 OLE DB 樣板時,通常需要將記錄加至包含識別資料行的資料表。

若要使用 Visual C++ 6.0 隨附的 OLE DB for ODBC 提供者,Msdasql.dll,讓識別資料行正確遞增,您需要用到 COLUMN_ENTRY_STATUS 巨集。
其他相關資訊
下面程式碼範例將示範使用 Visual C++ 6.0 OLE DB 使用者樣板 (Consumer Template) 定義存取子對應 (Accessor Map) 時,要如何使用此巨集:

程式碼範例

   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()   ...   };
在資料表中加入新記錄的程式碼應該會類似下面範例:
   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();
参考
請參閱 MSDN 線上文件中的下列主題:

  • VC++ 說明文件 (VC++ Documentation) 中有關 COLUMN_ENTRY_STATUS 的主題
  • OLE DB 主題中標題為 Status 的文件中有定義「DBSTATUS_S_IGNORE」的資訊

本文件是根據 Microsoft Knowledgebase 文件編號 Q194678 翻譯的。若要參考原始英文文件內容,請至以下網址:

內容

文章識別碼:194678 - 最後檢閱時間:02/23/2014 08:00:02 - 修訂: 2.0

  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Data Access Components 2.5
  • kbnosurvey kbarchive kbhowto kbatl300 kbmdac250 kbvc600 kbprovider kbconsumer kbdatabase kbgrpdsvcdb kbodbc KB194678
意見反應