С чего бы начать?
От: dROb Россия  
Дата: 08.10.03 11:41
Оценка:
Здравствуйте!
Передо мной стоит задача — написать на С++ программу с использованием баз данных.
Какую базу данных использовать — решать мне. Наверное будет MySQL или Access. Опыта в программировании БД — никакого! Вчера поставил у себя MySQL. Написал пару коротеньких скриптов на PHP — понравилось! Все выглядит довольно просто
Интересуют вот какие вопросы:
1. Как сделать так, чтобы получившейся программе было всё-равно, что установлено на компе у пользователя (MySQL,Access,ODBC, etc..).
т.е. доступ к файлу базе данных осуществлялся не через программу в которой он создан, а через какой-нить драйвер что-ли?
2. Если использовать ODBC, то как я понял я не могу быть уверен в том что моя программа пойдет на любом компе?

Слышал где-то про некий BDE! Также слышал про его глючность и ненадежность, а также что придется в дистрибутив программы засовывать многометровые библиотеки! Правда ли это?

best regards dROb, drob()inbox.ru
Re: С чего бы начать?
От: mikkri Великобритания  
Дата: 08.10.03 11:52
Оценка:
Здравствуйте, dROb, Вы писали:

RO> Передо мной стоит задача — написать на С++ программу с использованием баз данных.



RO> Интересуют вот какие вопросы:

RO>1. Как сделать так, чтобы получившейся программе было всё-равно, что установлено на компе у пользователя (MySQL,Access,ODBC, etc..).
RO>т.е. доступ к файлу базе данных осуществлялся не через программу в которой он создан, а через какой-нить драйвер что-ли?

Если под Win32, то смотри на ADO. Ну и в запросах дальше SQL92 не ходи .

RO>2. Если использовать ODBC, то как я понял я не могу быть уверен в том что моя программа пойдет на любом компе?


Ну если на любом компе не будет нужного драйвера, то да. Или этот комп не будет работать под Win32.

RO>Слышал где-то про некий BDE! Также слышал про его глючность и ненадежность, а также что придется в дистрибутив программы засовывать многометровые библиотеки! Правда ли это?


У меня только печальный опыт работы с BDE есть...
... << RSDN@Home 1.1 beta 2 >>
Re[2]: С чего бы начать?
От: dROb Россия  
Дата: 08.10.03 12:08
Оценка:
Здравствуйте, mikkri, Вы писали:
M>Если под Win32, то смотри на ADO. Ну и в запросах дальше SQL92 не ходи .
А что значит дальше SQL92? стандарт что-ли такой?

M>У меня только печальный опыт работы с BDE есть...

Значит будем изучать ADO!

И все-таки для гарантии — Действаительно ли ADO портабелен. Т.е. я беру вместе со своей программой драйвера ADO И файл БД (xxxx.mdb) и всё?
Re[3]: С чего бы начать?
От: mikkri Великобритания  
Дата: 08.10.03 12:18
Оценка:
Здравствуйте, dROb, Вы писали:

RO>Здравствуйте, mikkri, Вы писали:

M>>Если под Win32, то смотри на ADO. Ну и в запросах дальше SQL92 не ходи .
RO>А что значит дальше SQL92? стандарт что-ли такой?
ANSI SQL 92

M>>У меня только печальный опыт работы с BDE есть...

RO>Значит будем изучать ADO!
RO>И все-таки для гарантии — Действаительно ли ADO портабелен. Т.е. я беру вместе со своей программой драйвера ADO И файл БД (xxxx.mdb) и всё?
Только в пределах Win32.
В случае Jet (ADO драйвер для Access) это так. В других случаях могут быть небольшие вариации.
... << RSDN@Home 1.1 beta 2 >>
Re[3]: С чего бы начать?
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 08.10.03 12:19
Оценка:
Здравствуйте, dROb, Вы писали:

M>>У меня только печальный опыт работы с BDE есть...

RO>Значит будем изучать ADO!
Это дело

RO>И все-таки для гарантии — Действаительно ли ADO портабелен. Т.е. я беру вместе со своей программой драйвера ADO И файл БД (xxxx.mdb) и всё?

ADO это ~ 6 мегабайтный дистрибутив mdac_typ.exe

Хотя, в современных версиях Windows он уже стоит по умолчанию...
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[4]: С чего бы начать?
От: Slam Россия  
Дата: 08.10.03 12:46
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Здравствуйте, dROb, Вы писали:


M>>>У меня только печальный опыт работы с BDE есть...

RO>>Значит будем изучать ADO!
КД>Это дело

RO>>И все-таки для гарантии — Действаительно ли ADO портабелен. Т.е. я беру вместе со своей программой драйвера ADO И файл БД (xxxx.mdb) и всё?

КД>ADO это ~ 6 мегабайтный дистрибутив mdac_typ.exe

КД>Хотя, в современных версиях Windows он уже стоит по умолчанию...


Плюс Jet для Аксесса, ещё 3 с лишним мегабайта (если MDAC выше 2.5)
Re[5]: Ну вот и первые результаты!
От: dROb Россия  
Дата: 08.10.03 14:04
Оценка:
Откомпилировал исходник из http://www.rsdn.ru/article/vcpp/import.xml
Получил такой результат-

_com_error:
Error : 800A0E7A
ErrorMessage: Unknown error 0x800A0E7A
Description : Не удается найти указанного поставщика. Вероятно, он установлен неправильно.
Source : ADODB.Connection

Windows везде найдет какой-нибудь UNKNOWN error !!

Что бы это значило?

Может кто кинет каким-нибудь работающим примером?

drob()inbox.ru
Re[6]: Ну вот и первые результаты!
От: KeenTheGreen Россия  
Дата: 10.10.03 08:10
Оценка:
Здравствуйте, dROb, Вы писали:

RO>_com_error:

RO>Error : 800A0E7A
RO>ErrorMessage: Unknown error 0x800A0E7A
RO>Description : Не удается найти указанного поставщика. Вероятно, он установлен неправильно.

Вероятно он не установлен


RO>Windows везде найдет какой-нибудь UNKNOWN error !!


Это они любят!


А все-таки, ты к чему коннектишься? К .mdb через Jet?
Можно глянуть на connection string?
И заодно — какая винда?
K.T.G.
Re[7]: Ну вот и первые результаты!
От: dROb Россия  
Дата: 10.10.03 13:28
Оценка:
Здравствуйте, KeenTheGreen, Вы писали:

KTG>Вероятно он не установлен

Оказывается действительно не установлен!
Строка коннекта выглядела так
con->Open(L"Provider=Microsoft.Jet.OLEDB.3.51;"
L"Data Source=Elections.mdb","","",0);
Сначала я исправил вот на это — ... OLEDB.4...
Потом вот так — ...OLEDB.4.0... — и заработало! Кто-ж знал

Всвязи с этим возникает вопрос: Допустим у юзера установлен не OLEDB.4.0 а допустим 3.35 ну или может 4.0a ? Как тогда быть ? Где хранится информация о provider'ах ?

RO>>Windows везде найдет какой-нибудь UNKNOWN error !!


KTG>Это они любят!



KTG>А все-таки, ты к чему коннектишься? К .mdb через Jet?

АГА!

KTG>Можно глянуть на connection string?

KTG>И заодно — какая винда?

WIN XP
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.