Здравствуйте!
Передо мной стоит задача — написать на С++ программу с использованием баз данных.
Какую базу данных использовать — решать мне. Наверное будет MySQL или Access. Опыта в программировании БД — никакого! Вчера поставил у себя MySQL. Написал пару коротеньких скриптов на PHP — понравилось! Все выглядит довольно просто
Интересуют вот какие вопросы:
1. Как сделать так, чтобы получившейся программе было всё-равно, что установлено на компе у пользователя (MySQL,Access,ODBC, etc..).
т.е. доступ к файлу базе данных осуществлялся не через программу в которой он создан, а через какой-нить драйвер что-ли?
2. Если использовать ODBC, то как я понял я не могу быть уверен в том что моя программа пойдет на любом компе?
Слышал где-то про некий BDE! Также слышал про его глючность и ненадежность, а также что придется в дистрибутив программы засовывать многометровые библиотеки! Правда ли это?
Здравствуйте, dROb, Вы писали:
RO> Передо мной стоит задача — написать на С++ программу с использованием баз данных.
RO> Интересуют вот какие вопросы: RO>1. Как сделать так, чтобы получившейся программе было всё-равно, что установлено на компе у пользователя (MySQL,Access,ODBC, etc..). RO>т.е. доступ к файлу базе данных осуществлялся не через программу в которой он создан, а через какой-нить драйвер что-ли?
Если под Win32, то смотри на ADO. Ну и в запросах дальше SQL92 не ходи .
RO>2. Если использовать ODBC, то как я понял я не могу быть уверен в том что моя программа пойдет на любом компе?
Ну если на любом компе не будет нужного драйвера, то да. Или этот комп не будет работать под Win32.
RO>Слышал где-то про некий BDE! Также слышал про его глючность и ненадежность, а также что придется в дистрибутив программы засовывать многометровые библиотеки! Правда ли это?
Здравствуйте, mikkri, Вы писали: M>Если под Win32, то смотри на ADO. Ну и в запросах дальше SQL92 не ходи .
А что значит дальше SQL92? стандарт что-ли такой?
M>У меня только печальный опыт работы с BDE есть...
Значит будем изучать ADO!
И все-таки для гарантии — Действаительно ли ADO портабелен. Т.е. я беру вместе со своей программой драйвера ADO И файл БД (xxxx.mdb) и всё?
Здравствуйте, 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) это так. В других случаях могут быть небольшие вариации.
Здравствуйте, dROb, Вы писали:
M>>У меня только печальный опыт работы с BDE есть... RO>Значит будем изучать ADO!
Это дело
RO>И все-таки для гарантии — Действаительно ли ADO портабелен. Т.е. я беру вместе со своей программой драйвера ADO И файл БД (xxxx.mdb) и всё?
ADO это ~ 6 мегабайтный дистрибутив mdac_typ.exe
Хотя, в современных версиях Windows он уже стоит по умолчанию...
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Здравствуйте, dROb, Вы писали:
M>>>У меня только печальный опыт работы с BDE есть... RO>>Значит будем изучать ADO! КД>Это дело
RO>>И все-таки для гарантии — Действаительно ли ADO портабелен. Т.е. я беру вместе со своей программой драйвера ADO И файл БД (xxxx.mdb) и всё? КД>ADO это ~ 6 мегабайтный дистрибутив mdac_typ.exe
КД>Хотя, в современных версиях Windows он уже стоит по умолчанию...
Плюс Jet для Аксесса, ещё 3 с лишним мегабайта (если MDAC выше 2.5)
_com_error:
Error : 800A0E7A
ErrorMessage: Unknown error 0x800A0E7A
Description : Не удается найти указанного поставщика. Вероятно, он установлен неправильно.
Source : ADODB.Connection
Windows везде найдет какой-нибудь UNKNOWN error !!
Здравствуйте, dROb, Вы писали:
RO>_com_error: RO>Error : 800A0E7A RO>ErrorMessage: Unknown error 0x800A0E7A RO>Description : Не удается найти указанного поставщика. Вероятно, он установлен неправильно.
Здравствуйте, 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>И заодно — какая винда?