ATL OLE DB 消費者精靈
更新:2007 年 11 月
這個精靈會設定 OLE DB 消費者類別,使得類別具有透過指定之 OLE DB 提供者 (Provider) 存取指定資料來源所需的資料繫結。
注意事項: |
---|
在 Class 和 [.h 檔案] 欄位輸入名稱之前,精靈會要求您按一下 [資料來源] 按鈕以選取資料來源。 |
資料來源
[資料來源] 按鈕讓您能夠使用指定的 OLE DB 提供者設定指定的資料來源。當您按一下這個按鈕時,會出現 [資料連結內容] 對話方塊。如需建立連接字串和 [資料連結內容] 對話方塊的詳細資訊,請參閱 Windows SDK 文件中的資料連結 API 概觀。注意事項: 在以前的版本中,按下 SHIFT 鍵再按一下 [資料來源] 按鈕,會開啟 [開啟舊檔] 對話方塊,讓您選取資料連結檔 (.udl)。這個功能已不再支援。
對話方塊有四個索引標籤:
[提供者] 索引標籤
[連接] 索引標籤
[進階] 索引標籤
[全部] 索引標籤
Class
在您選取資料來源之後,這個方塊會根據您選取的資料表或預存程序 (Stored Procedure) 填入 (Populate) 預設類別名稱 (請參閱下面的 [選取資料來源])。您可編輯類別名稱。.h 檔案
在您選取資料來源之後,這個方塊會根據您選取的資料表或預存程序填入預設標頭類別名稱 (請參閱下面的 [選取資料來源])。您可以編輯標頭檔 (Header File) 的名稱或選取現有的標頭檔。屬性化
這個選項指定精靈是否要使用屬性 (Attribute) 或樣板宣告來建立消費者類別。當您選取這個選項時,精靈會使用屬性而不是樣板宣告 (這是預設選項)。當您取消選取這個選項時,精靈會使用樣板宣告,而不是屬性。當您選取 [資料表] 做為消費者 [類型] 時,精靈便會使用 db_source 和 db_table 屬性建立資料表及資料表存取子類別宣告,並使用 db_column 建立資料行對應,例如:
// Inject table class and table accessor class declarations [ db_source("<initialization_string>"), db_table("dbo.Orders") ] ... // Column map [ db_column(1, status=m_dwOrderIDStatus, length=m_dwOrderIDLength) ] LONG m_OrderID; [ db_column(2, status=m_dwCustomerIDStatus, length=m_dwCustomerIDLength) ] TCHAR m_CustomerID[6]; ...
而非使用 CTable 樣板類別 (Template Class) 來宣告該資料表和資料表存取子類別,以及 BEGIN_COLUMN_MAP 和 END_COLUMN_MAP 巨集以建立該資料行對應,例如:
// Table accessor class class COrdersAccessor; // Table class class COrders : public CTable<CAccessor<COrdersAccessor> >; ... // Column map BEGIN_COLUMN_MAP(COrderDetailsAccessor) COLUMN_ENTRY_LENGTH_STATUS(1, m_OrderID, m_dwOrderIDLength, m_dwOrderIDStatus) COLUMN_ENTRY_LENGTH_STATUS(2, m_CustomerID, m_dwCustomerIDLength, m_dwCustomerIDStatus) ... END_COLUMN_MAP()
當您選取 [命令] 做為消費者 [類型] 時,精靈便會使用 db_source、db_command 和 db_column 屬性建立資料行對應,例如:
[ db_source("<initialization_string>"), db_command("SQL_command") ] ... // Column map using db_column is the same as for consumer type of 'table'
而非在命令類別 .h 檔案中使用命令和命令存取子類別宣告,例如:
Command accessor class: class CListOrdersAccessor; Command class: class CListOrders : public CCommand<CAccessor<CListOrdersAccessor> >; ... // Column map using BEGIN_COLUMN_MAP ... END_COLUMN_MAP is the same as // for consumer type of 'table'
如需詳細資訊,請參閱Basic Mechanics of Attributes。
類型
選取下列任一選項按鈕來指定消費者類別是衍生自 CTable 或 CCommand (預設)。資料表
如果您要使用 CTable 或 db_table 來建立資料表和資料表存取子類別宣告,請選取這個選項。命令
如果您要使用 CCommand 或 db_command 來建立命令和命令存取子類別宣告,請選取這個選項,這是預設選項。
支援
選取核取方塊來指定要在消費者中支援哪種更新 (預設為無)。下列每一項都會在屬性集 (Property Set) 對應中設定 DBPROP_IRowsetChange 和 DBPROP_UPDATABILITY 的適當項目。變更
指定消費者支援資料列集 (Rowset) 中的資料列資料更新。插入
指定消費者支援在資料列集進行資料列插入。刪除
指定消費者支援從資料列集進行資料列刪除。