// ConnectionString.cpp : Defines the entry point for the console application. // #include "stdafx.h" // ConnectionStringSampleCpp.cpp // compile with: /EHsc //#import "msado15.dll" no_namespace rename("EOF", "EndOfFile") #import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EOFile") // Function declarations inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);}; void ConnectionStringX(); _bstr_t GetState(int intState); void PrintProviderError(_ConnectionPtr pConnection); void PrintComError(_com_error &e); int main() { if (FAILED(::CoInitialize(NULL))) return 0; ConnectionStringX(); ::CoUninitialize(); } void ConnectionStringX() { // Define Connection object pointers. Initialize pointers on define. These are in the ADODB:: namespace _ConnectionPtr pConnection1 = NULL; _ConnectionPtr pConnection2 = NULL; _ConnectionPtr pConnection3 = NULL; _ConnectionPtr pConnection4 = NULL; // Define Other Variables HRESULT hr = S_OK; try { // Open a connection using OLE DB syntax. TESTHR(pConnection1.CreateInstance(__uuidof(Connection))); //pConnection1->ConnectionString = "Provider='sqloledb';Data Source='(local)';" // "Initial Catalog='DSNPubs';Integrated Security='SSPI';"; //pConnection1->ConnectionString = "Provider='sqloledb';Server='PCD-LT-MCERTINI\\SQLEXPRESS';" // "AttachDbFilename='C:\\SQL Server 2000 Sample Databases\\NORTHWND.mdf';Initial Catalog='northwind';Trusted_Connection=Yes;"; pConnection1->ConnectionString = "Provider='SQLOLEDB.1';Persist Security Info='True';User ID='mcertini';Initial Catalog='northwind';Data Source='PCD-LT-MCERTINI\\SQLEXPRESS';"; //pConnection1->ConnectionString = "Provider='SQLNCLI10';Data Source='NORTHWND.mdf';"; pConnection1->ConnectionTimeout = 30; pConnection1->Open("", "", "",adConnectUnspecified); printf("cnn1 state: %s\n", (LPCTSTR)GetState(pConnection1->State)); // Open a connection using a DSN and ODBC tags. // It is assumed that you have create DSN 'DataPubs' with a user name as // 'MyUserId' and password as 'MyPassword'. //TESTHR(pConnection2.CreateInstance(__uuidof(Connection))); //pConnection2->ConnectionString = "DSN=DataPubs;UID=MyUserId;PWD=MyPassword;"; //pConnection2->Open("", "", "", adConnectUnspecified); //printf("cnn2 state: %s\n", (LPCTSTR)GetState(pConnection2->State)); // Open a connection using a DSN and OLE DB tags. //TESTHR(pConnection3.CreateInstance(__uuidof(Connection))); //pConnection3->ConnectionString = "Data Source=DataPubs;"; //pConnection3->Open("", "", "", adConnectUnspecified); //printf("cnn3 state: %s\n", (LPCTSTR)GetState(pConnection3->State)); // Open a connection using a DSN and individual arguments instead of a connection string. // It is assumed that you have create DSN 'DataPubs' with a user name as // 'MyUserId' and password as 'MyPassword'. //TESTHR(pConnection4.CreateInstance(__uuidof(Connection))); //pConnection4->Open("DataPubs", "MyUserId", "MyPassword", adConnectUnspecified); //printf("cnn4 state: %s\n", (LPCTSTR)GetState(pConnection4->State)); } catch(_com_error &e) { // Notify user of any errors. Pass a connection pointer accessed from the Connection. PrintProviderError(pConnection1); if (pConnection2) PrintProviderError(pConnection2); if (pConnection3) PrintProviderError(pConnection3); if (pConnection4) PrintProviderError(pConnection4); PrintComError(e); } // Cleanup objects before exit. if (pConnection1) if (pConnection1->State == adStateOpen) pConnection1->Close(); if (pConnection2) if (pConnection2->State == adStateOpen) pConnection2->Close(); if (pConnection3) if (pConnection3->State == adStateOpen) pConnection3->Close(); if (pConnection4) if (pConnection4->State == adStateOpen) pConnection4->Close(); } _bstr_t GetState(int intState) { _bstr_t strState; switch(intState) { case adStateClosed: strState = "adStateClosed"; break; case adStateOpen: strState = "adStateOpen"; break; default: ; } return strState; } void PrintProviderError(_ConnectionPtr pConnection) { // Print Provider Errors from Connection object. // pErr is a record object in the Connection's Error collection. ErrorPtr pErr = NULL; if ( (pConnection->Errors->Count) > 0) { long nCount = pConnection->Errors->Count; // Collection ranges from 0 to nCount -1. for ( long i = 0 ; i < nCount ; i++ ) { pErr = pConnection->Errors->GetItem(i); printf("Error number: %x\t%s\n", pErr->Number, (LPCSTR)pErr->Description); } } } void PrintComError(_com_error &e) { _bstr_t bstrSource(e.Source()); _bstr_t bstrDescription(e.Description()); // Print Com errors. printf("Error\n"); printf("\tCode = %08lx\n", e.Error()); printf("\tCode meaning = %s\n", e.ErrorMessage()); printf("\tSource = %s\n", (LPCSTR) bstrSource); printf("\tDescription = %s\n", (LPCSTR) bstrDescription); }