Статья: Введение в ADO
5. Установка соединения с источником данных.
Для этих целей, как отмечалось выше, используется объект Connection (подключение к источнику данных и управление этим подключением осуществляется с помощью методов Open(), Close() объекта Connection) .Хотя, стоит заметить, что вы можете не создавать его самостоятельно. Можно просто позволить ADO создать соединение, используемое объектами Recordset и Command. Однако вам необходимо создать объект Connection, если предполагается управление транзакциями (для создания и управления транзакциями предназначены следующие методы Connection: BeginTrans(), CommitTrans() и RoolbackTrans()).
Итак, создание соединения. Для этого предпринимаем следующие шаги:
1. Объявляем указатель на соединение:
_ConnectionPtr pConn;
2. Создаем объект Connection с помощью функции CreateInstance():
HRESULT CreateInstance( const CLSID& rclsid, IUnknown* pOuter=NULL, DWORD dwClsContext = CLSCTX_ALL )
где
rclsid - CLSID объекта;
pUnknown - указатель на внешний интерфейс при агрегировании;
dwClsContext - контекст запуска исполняемого кода.
Пример:
HRESULT hr;
hr = pConn.CreateInstance(__uuidof(Connection));
или
hr = pConn.CreateInstance(__uuidof(Connection), NULL,CLSCTX_INPROC_SERVER );
3. после создания экземпляра класса Connection создаем соединение. Сэтойцельювызываемметод Open объекта Connection.
HRESULT Open(_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options=NULL);
ConnectionString - строка соединения (см.табл.1.1 и 1.2).
UserID - имя пользователя для подключения к источнику данных
Password - пароль пользователя
Options - позволяет указать, каким образом будет осуществляться соединение - синхронно (adConnectUnspecified) или асинхронно(adAsyncConnect).
Таблица 1.1. Вид строки соединения, передаваемой в метод Open(...) объекта Connection для различных OLE DB поставщиков (MSDN)
Источник данных | Строка соединения OLE DB |
Microsoft® Access | Provider=Microsoft.Jet.OLEDB.4.0;Data Source=physical path to .mdb file |
Microsoft SQL Server | Provider=SQLOLEDB.1;Data Source=path to database on server |
Oracle | Provider=MSDAORA.1;Data Source=path to database on server |
Microsoft Indexing Service | Provider=MSIDXS.1;Data Source=path to file |
Таблица 1.2. Вид строки соединения, передаваемой в метод Open(...) объекта Connection для различных ODBC поставщиков данных (MSDN)
Источник данных | Строка соединения ODBC |
Microsoft Access | Driver={Microsoft Access Driver (*.mdb)};DBQ=physical path to .mdb file |
SQL Server | DRIVER={SQL Server};SERVER=path to server |
Oracle | DRIVER={Microsoft ODBC for Oracle};SERVER=path to server |
Microsoft Excel | Driver={Microsoft Excel Driver (*.xls)};DBQ=physical path to .xls file; DriverID=278 |
Microsoft Excel 97 | Driver={Microsoft Excel Driver (*.xls)};DBQ=physical path to .xls file;DriverID=790 |
Paradox | Driver={Microsoft Paradox Driver (*.db)};DBQ=physical path to .db file;DriverID=26 |
Text | Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir=physical path to .txt file |
Microsoft Visual FoxPro® (with a database container) | Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDb=physical path to .dbc file |
Microsoft Visual FoxPro (without a database container) | Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDb=physical path to .dbf file |
Следующий пример показывает установку соединения с базой данных pubs, входящей в стандартный пакет поставки MS SQL Server 7.0 с помощью OLE DB поставщика:
_ConnectionPtr pConn = NULL;
_bstr_t strConn = "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs";
try
{