Использование директивы #import в Visual C++ - ADO DB
ОГЛАВЛЕНИЕ
Страница 5 из 7
ADO DB
// console.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <stdio.h>
#import "C:\Program Files\Common Files\System\ado\msado20.tlb" \
rename("EOF","ADOEOF") rename("BOF","ADOBOF")
// оператор rename необходим, т.к. EOF определён как макрос
// в файле stdio.h
using namespace ADODB;
void main()
{
::CoInitialize(NULL);
try {
// открываем соединение с БД
_ConnectionPtr con("ADODB.Connection");
con->Open(L"Provider=Microsoft.Jet.OLEDB.3.51;"
L"Data Source=Elections.mdb","","",0);
// открываем таблицу
_RecordsetPtr rset("ADODB.Recordset");
rset->Open(L"ElectTbl",(IDispatch*)con,
adOpenDynamic,adLockOptimistic,adCmdTable);
FieldsPtr flds = rset->Fields;
// добавляем
rset->AddNew();
flds->Item[L"Фамилия"] ->Value = L"Пупкин";
flds->Item[L"Имя"] ->Value = L"Василий";
flds->Item[L"Отчество"] ->Value = L"Карлович";
flds->Item[L"Голосовал ли"] ->Value = false;
flds->Item[L"За кого проголосовал"]->Value = L"Против всех";
rset->Update();
// подменяем
flds->Item[L"Голосовал ли"] ->Value = true;
flds->Item[L"За кого проголосовал"]->Value = L"За наших";
rset->Update();
// просмотр
rset->MoveFirst();
while (!rset->ADOEOF) {
char buf[1024];
sprintf(buf,"%s %s %s: %s - %s\n",
(LPCTSTR)_bstr_t(flds->Item[L"Фамилия"]->Value),
(LPCTSTR)_bstr_t(flds->Item[L"Имя"]->Value),
(LPCTSTR)_bstr_t(flds->Item[L"Отчество"]->Value),
(bool)flds->Item[L"Голосовал ли"]->Value? "Да": "Нет",
(LPCTSTR)_bstr_t(flds->Item[L"За кого проголосовал"]->Value));
CharToOem(buf,buf);
printf(buf);
rset->MoveNext();
}
} catch (_com_error& er) {
char buf[1024];
sprintf(buf,"_com_error:\n"
"Error : %08lX\n"
"ErrorMessage: %s\n"
"Description : %s\n"
"Source : %s\n",
er.Error(),
(LPCTSTR)_bstr_t(er.ErrorMessage()),
(LPCTSTR)_bstr_t(er.Description()),
(LPCTSTR)_bstr_t(er.Source()));
CharToOem(buf,buf); // только для косольных приложений
printf(buf);
}
::CoUninitialize();
}