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
{
pConn.CreateInstance(__uuidof(Connection));
pConn->Open(strConn,"sa","",adConnectUnspecified);
}
catch(_com_error e)
{
//Обработка ошибок соединения
}
Примечание:
Исключения в ADO. Для обработки исключений ADO необходимо обеспечить блок catch для объекта _com_error. Этот класс используется для возврата ошибок из классов, сгенерированных директивой #import. Класс _com_error инкапсулирует генерируемые значения HRESULT и любые объекты IErrorInfo, сгенерированные поставщиком OLE DB.
Пример обработчиков исключений ADO:
void PrintComError(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
// Print COM errors.
printf("Error ");
printf(" Code = %08lx ", e.Error());
printf(" Code meaning = %s ", e.ErrorMessage());
printf(" Source = %s ", (LPCSTR) bstrSource);
printf(" Description = %s ", (LPCSTR) bstrDescription);
}
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 %s", pErr->Number,
pErr->Description);
}
}
}
По умолчанию при установке соединения время ожидания составляет 15 сек. Изменить это значение можно заданием перед открытием соединения свойства ConnectionTimeout.
Если требуется ограничить доступ приложения к источнику данных, перед открытием соединения необходимо установить режим коннекта (свойство Mode объекта Connection). Mode может содержать комбинацию (поразрядное ИЛИ) следующих значений:
adModeRead - Только для чтения
adModeReadWrite - Для чтения/записи.
adModeShareDenyNone - Позволить другим проводить чтение/запись
adModeShareDenyRead - Запретить другим чтение.
adModeShareDenyWrite - Запретить другим запись
adModeShareExclusive - Запретить другим чтение/запись
adModeUnknown - Нет разрешений (по умолчанию)
adModeWrite - Только для записи
6. Закрытие соединения
Завершается работа с источником данных закрытием соединения - вызовом метода Close() объекта Connection.
pConn->Close();
Часть 2.
Итак, продолжим.
7. Наборы записей.
Соединение с источником данных установлено. Далее необходимо собственно эти данные получить и как-то ими управлять. С этой целью создается объект Recordset, который инкапсулирует набор записей, возвращаемых источником. С помощью этого объекта мы сможем добавлять, удалять, изменять записи, в этот объект включен механизм перемещений по записям в наборе данных.
... /загружать в/из файла. Его можно сохранять/загружать в/из текстовой строки. Он может загружать данные из объекта Record или какого-либо ресурса по URL. Его можно клонировать. Для иллюстрации работы с объектом Stream приведу-таки пример на VB6, который сохраняет изображение в файл без использования инструкции Put: Dim stream As New ADODB.stream 'Тип потока - бинарный stream.Type = ...
... string Company; public string Phone; public string Fax; // Для отложенной загрузки списка заказов необходимо перейти // от использования ArrayList к использованию специального класса из // ObjectSpaces – ObjectList. public ObjectList Orders = new ObjectList(); } public class Order { private int _orderID = 0; public int OrderID { get {return _orderID;} ...
... данных базы и их представление. С помощью встроенных средств и инструментов базы данных создается пользовательский интерфейс, позволяющий управлять процессами ввода, хранения, обработки, обновления и представления информации базы данных.[2] 4 ЭТАПЫ РАЗРАБОТКА ПРОГРАММНОГО ПРОДУКТА Данная программа создана для учета успеваемости студентов. Для работы с программой необходимо нужные группы или ...
... форматами поддерживает OLE DB Persistence Provider. Кроме сохранения, можно также загружать (восстанавливать) объект Recordset из файлов. Сохранение и последующая загрузка рекордсета из файла в формате XML дали возможность использования XML-документов в качестве баз данных. OLE DB Persistence Provider жестко задает формат результирующего XML-документа: для описания структуры и типов узлов всегда ...
0 комментариев