Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Access 2000 через ADO 
:(
    Опции темы
chipset
Дата 7.4.2005, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 164



Три шага для подключения БД Access2000 к своей программе:

1) Прежде всего, качаем файл, присоединённый к данной теме. В нём находятся 2 исходника, в которых лежат все необходимые классы и структуры. Распаковав архив, заходим в Ado2.h, и изменяем пути к длл-кам:
Цитата
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" rename("EOF", "EndOfFile")
#import "C:\Program Files\Common Files\System\ado\MSJRO.DLL" no_namespace

Если версия Windows - 2000 или XP, то обе длл-ки лежат в System32.

2) Подключаем файл Ado2.h к исходным кодам своей программы. Лучше всего это сделать в файле stdafx.h

3) Для того, чтобы база данных работала в любой Windows, где даже нету установленного Office, достаточно просто включить в дистрибутив своей программы два файла: msado15.dll и msjet40.dll, и в инсталляционном скрипте установить опцию авторегистрации (Register DLL server) для обеих длл-ок. При упаковке каким-нибудь InstallShield-ом или WISE, эти два файла добавят всего лишь 700-800 Кб.

Простой пример работы с ADO:
Цитата
#include  "Ado2.h"

// ...

void  SomeFunction()
{
     // коннектимся к нашей базе данных "my_database.mdb":
     CADODatabase   db;
     CString  csPath = "c:\my_database.mdb";  // измените этот путь
     db.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + csPath);
     
     // вызываем хранимую процедуру (запрос) "SetSomeData":
     CADOCommand qd(&db, "SetSomeData");
     // передаём параметр типа integer
     CADOParameter theparam(ADODB::adInteger);
     theparam.SetName("param_some_data");
     theparam.SetValue(123);
     qd.AddParameter(&theparam);
     qd.Execute();

     // вызываем хранимую процедуру "GetSomeData":
     CADOCommand qd(&db, "GetSomeData");
     CADORecordset rs(&db);
     rs.Execute(&qd);
     long cntRes = rs.GetRecordCount();

     // получаем поле "some_data" из набора записей результата запроса
     if(cntRes)
     {
          rs.MoveLast();
          rs.MoveFirst();
          for(int i = 0; i < cntRes; i++)
          {
               _variant_t val;
               rs.GetFieldValue("some_data", val);

               // получаем значение поля в виде длинного целого
               long lVal = long(val);

               rs.MoveNext();
          }
     }     
}



--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.