共用方式為


建立資料來源的連接

若要存取 SQL Server Native Client OLE DB 提供者,取用者必須先呼叫 CoCreateInstance 方法來建立資料來源物件的執行個體。 唯一類別識別項 (CLSID) 會識別每個 OLE DB 提供者。 若是 SQL Server Native Client OLE DB 提供者,類別識別項為 CLSID_SQLNCLI10。 您也可以使用符號 SQLNCLI_CLSID,該符號會解析您參考之 sqlncli.h 中所使用的 SQL Server Native Client OLE DB 提供者。

資料來源物件會公開 IDBProperties 介面,取用者可以使用這個介面來提供基本驗證資訊,例如,伺服器名稱、資料庫名稱、使用者識別碼和密碼。 呼叫 IDBProperties::SetProperties 方法可設定這些屬性。

如果有多個 SQL Server 執行個體在電腦上執行,伺服器名稱會指定為 ServerName\InstanceName。

資料來源物件也會公開 IDBInitialize 介面。 屬性設定之後,就會呼叫 IDBInitialize::Initialize 方法來建立資料來源的連接。 例如:

CoCreateInstance(CLSID_SQLNCLI10, 
                 NULL, 
                 CLSCTX_INPROC_SERVER,
                 IID_IDBInitialize, 
                 (void **) &pIDBInitialize)

呼叫 CoCreateInstance 會建立與 CLSID_SQLNCLI10 相關聯之類別的單一物件 (與資料相關聯的 CSLID 以及建立物件所使用的程式碼)。 IID_IDBInitialize 是介面 (IDBInitialize) 識別項的參考,用於與物件進行通訊。

以下是初始化與建立資料來源之連接的範例函數。

void InitializeAndEstablishConnection() {
   // Initialize the COM library.
   CoInitialize(NULL);

   // Obtain access to the SQL Server Native Client OLE DB provider.
   hr = CoCreateInstance(CLSID_SQLNCLI10, 
                         NULL, 
                         CLSCTX_INPROC_SERVER,
                         IID_IDBInitialize, 
                         (void **) &pIDBInitialize);
   // Initialize property values needed to establish connection.
   for (i = 0 ; i < 4 ; i++) 
      VariantInit(&InitProperties[i].vValue);

   // Server name.
   // See DBPROP structure for more information on InitProperties
   InitProperties[0].dwPropertyID  = DBPROP_INIT_DATASOURCE;
   InitProperties[0].vValue.vt    = VT_BSTR;
   InitProperties[0].vValue.bstrVal= 
                     SysAllocString(L"Server");
   InitProperties[0].dwOptions    = DBPROPOPTIONS_REQUIRED;
   InitProperties[0].colid       = DB_NULLID;

   // Database.
   InitProperties[1].dwPropertyID  = DBPROP_INIT_CATALOG;
   InitProperties[1].vValue.vt    = VT_BSTR;
   InitProperties[1].vValue.bstrVal= SysAllocString(L"database");
   InitProperties[1].dwOptions    = DBPROPOPTIONS_REQUIRED;
   InitProperties[1].colid       = DB_NULLID;

   // Username (login).
   InitProperties[2].dwPropertyID  = DBPROP_AUTH_INTEGRATED;
   InitProperties[2].vValue.vt    = VT_BSTR;
   InitProperties[2].vValue.bstrVal= SysAllocString(L"SSPI");
   InitProperties[2].dwOptions    = DBPROPOPTIONS_REQUIRED;
   InitProperties[2].colid       = DB_NULLID;
   InitProperties[3].dwOptions    = DBPROPOPTIONS_REQUIRED;
   InitProperties[3].colid       = DB_NULLID;

   // Construct the DBPROPSET structure(rgInitPropSet). The 
   // DBPROPSET structure is used to pass an array of DBPROP 
   // structures (InitProperties) to the SetProperties method.
   rgInitPropSet[0].guidPropertySet = DBPROPSET_DBINIT;
   rgInitPropSet[0].cProperties   = 4;
   rgInitPropSet[0].rgProperties   = InitProperties;

   // Set initialization properties.
   hr = pIDBInitialize->QueryInterface(IID_IDBProperties, 
                           (void **)&pIDBProperties);
   hr = pIDBProperties->SetProperties(1, rgInitPropSet); 
   pIDBProperties->Release();

   // Now establish the connection to the data source.
   pIDBInitialize->Initialize();
}

請參閱

概念

建立 SQL Server Native Client OLE DB 提供者應用程式