Udostępnij przez


Nawiązywania połączenia ze źródłem danych

Aby uzyskać dostęp do SQL Server Macierzystego dostawcy klient OLE DB, konsument musi najpierw utworzyć wystąpienia danych obiekt źródłowy wywołując Wywołanie funkcji CoCreateInstance metoda.Identyfikator unikatowy klasy (CLSID) identyfikuje każdego dostawca OLE DB.Dla SQL Server Macierzysta klient OLE DB, identyfikator klasy jest CLSID_SQLNCLI10. Można również użyć symbolu SQLNCLI_CLSID, który będzie rozpoznawać SQL Server Macierzystego dostawca klient OLE DB, który jest używany w sqlncli.h, odwołujące się użytkownik.

Dane obiekt źródłowy udostępnia IDBProperties interfejs, którego konsument używa w celu zapewnienia uwierzytelnianie podstawowe informacje, takie jak nazwa serwera, nazwa bazy danych, nazwę użytkownika i hasło.The IDBProperties::SetProperties metoda is called to zestaw these properties.

Jeśli nie ma wiele wystąpień SQL Server Nazwa serwera uruchomione na komputerze, jest określany jako ServerName\InstanceName.

Obiekt urządzenie źródłowe danych również udostępnia IDBInitialize interfejs.Po ustawieniu właściwości, połączenie z danymi urządzenie źródłowe jest ustanowiona przez wywołanie IDBInitialize::Initialize metoda.Na przykład:

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

To wywołanie Wywołanie funkcji CoCreateInstance tworzy pojedynczy obiekt klasy skojarzone z CLSID_SQLNCLI10 (CSLID związanych z danymi i kod, który będzie używany do utworzenia obiektu).IID_IDBInitialize to odwołanie do identyfikatora (interfejsIDBInitialize) należy użyć w celu komunikowania się z obiektem.

Poniżej przedstawiono funkcja próbkę, która inicjuje i ustanawia połączenie ze źródłem danych.Aby uzyskać informacje dotyczące acessing OLE DB przykładowych aplikacji zobacz Considerations for Installing SQL Server Samples and Sample Databases.

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();
}