Страница 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(); } |