powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выбор dll ADO в winXP win7 win8(8.1) и win10
23 сообщений из 23, страница 1 из 1
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361518
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые ГУРУ!
Нуждаюсь в ваших советах по следующим вопросам:

1. Нужно чтобы программа для работы с базой данных корректно работала на разных версиях Windows
winXP win7 win8(8.1) и win10 используя библиотеку ADO

В директории C:\Program Files (x86)\Common Files\System\ado есть куча dll.
Подскажите пожалуйста какие из из этих dll импортировать для той или иной версии windows
Google дает примеры использования msado15.dll msado20.dll ...
Хотелось бы знать какая dll в каких случаях используется (что-то вроде таблицы соответствий).
Базы данных - (Access MSSQL MySQL).

2. Если выбор dll зависит от ОС, то как программно подключить нужную библиотеку?
Я могу определить версию ОС пользовательской функцией. но прописать директиву #import в теле функции нельзя
Тогда как узнать версию ОС без использования пользовательской функции, чтобы в начале файла с кодом
прописать нужную dll

Или директивой #import прописывать все варианты,
а в программе, в зависимости от ОС, использовать вызовы функций из нужной dll ?

Заранее благодарен за любую помощь
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361519
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1. Нужно чтобы программа для работы с базой данных корректно работала на разных версиях Windows
winXP win7 win8(8.1) и win10 используя библиотеку ADO

Нужно устанавливать с дистрибутивом вашей программы MDAC
Программа должна быть только 32-битной.
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361522
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eolt, спасибо за MDAC

А что в самой windows изначально нет msado15.dll msado20.dll и т.д?

А как на счет 2 вопроса (программный выбор подключения)?
Какой подход тут нужен?
Спасибо.
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361525
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
EoltНужно устанавливать с дистрибутивом вашей программы MDAC
.
А что, в самой windows изначально нет нужных библиотек?
Вот что пишет microsoft по твоей ссылке:
"Microsoft Data Access Components (MDAC) 2.8 SP1 содержит те же основные компоненты доступа к данным, что и Microsoft SQL Server OLE DB, и драйвер ODBC. Установщик версии MDAC 2.8 SP1 устанавливает те же основные компоненты доступа к данным, что и операционная система Microsoft Windows XP SP2."

Я так понял, что во всех версиях windows все это есть... или я не чего-то не понял
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361528
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА что, в самой windows изначально нет нужных библиотек?


В вопросе был упомянут XP. Насколько я помню, в голой SP2 нет MDAC, и на счет SP3 тоже не уверен.
Насчет чистой Windows 10, тоже хз. А в остальных он вроде есть везде. Если специально его не удалили.

И еще он есть точно, на машине где стоит 32-битный Офис, так в дистрибутив офиса он входит.
Чтобы из VBА можно было коннектится к базам через ADO.
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361529
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArbitПодскажите пожалуйста какие из из этих dll импортировать

Не надо ничего импортировать из DLL. ADO работает на основе OLE DB и какие именно сервера
автоматизации создавать - решается на основе информации в реестре.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361530
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArbitEolt, спасибо за MDAC

А что в самой windows изначально нет msado15.dll msado20.dll и т.д?

А как на счет 2 вопроса (программный выбор подключения)?
Какой подход тут нужен?
Спасибо.

Там не только эти две dll. Их больше, и они с зависимостями. Часть это COM DLL, их нужно регистрировать в реестре.
Проще просто включить в инсталлятор вашей программы - установщик MDAC, и пытаться его поставить в конце инсталляции вашей проги. Если MDAC уже стоит, то его повторная установка не произойдет.
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361534
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз уточню вопросы.
1. Подскажите пожалуйста где можно почитать о назначении dll, расположенных по адресу:
C:\Program Files (x86)\Common Files\System\ado\ (для 64-битных ОС)
C:\Program Files\Common Files\System\ado\ (для 32-битных ОС)
и какими версиями ОС они поддерживаются?
Мне нужна в программе всего одна dll которая, которая будет работать в конкретной ОС например msado15.dll

2. Как программно ДИНАМИЧЕСКИ подключить нужную для данной ОС библиотеку ADO ?
Вариант 1 - Определить версию ОС до объявления директивы #import (как?), а потом
например
if ....
#import "C:\Program Files (x86)\Common Files\System\ado\ msado15.dll " rename("EOF","ADOEOF") rename("BOF","ADOBOF")
endif
Если msado15.dll присутствует во всех нужных версиях windows(XP, Vista, 8, 8.1, 10), то данный топик можно считать закрытым.
Если нет - то продолжу поиски ответа на свой вопрос

Вариант 2 - Объявить #import *.dll для каждой ОС, а в теле функции по работе с базой определить версию
ОС и использовать функции нужной библиотеки

Вариант 3 - ваш вариант

Спасибо
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361535
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovArbitПодскажите пожалуйста какие из из этих dll импортировать

Не надо ничего импортировать из DLL. ADO работает на основе OLE DB и какие именно сервера
автоматизации создавать - решается на основе информации в реестре.

А можно чуть-чуть подробнее как работать с базой без этой строчки на основе реестра
#import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" rename("EOF","ADOEOF") rename("BOF","ADOBOF")
а на основе данных реестра?

Сильно не пинайте пожалуйста
спасибо
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361536
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbitа на основе данных реестра?
Код: sql
1.
CoCreateInstance("ADODB.Connection")

и далее везде.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361537
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микрософт прикрывает технологии ADO (обосрались-с), так что задавать вопросы по поводу далеких планов совместимости нерационально.

https://msdn.microsoft.com/en-us/library/ms810810.aspx
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361539
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArbitЕще раз уточню вопросы.
1. Подскажите пожалуйста где можно почитать о назначении dll, расположенных по адресу:
C:\Program Files (x86)\Common Files\System\ado\ (для 64-битных ОС)
C:\Program Files\Common Files\System\ado\ (для 32-битных ОС)
и какими версиями ОС они поддерживаются?
Мне нужна в программе всего одна dll которая, которая будет работать в конкретной ОС например msado15.dllНигде. Это проприетарная информация Микрософт и она целиком и полностью на совести компании. Причем она не только может быть разной в разных ОС, но и меняться во время жизни одной и той-же машины. Приехал клиенту очередной "security update" и аля-улю.

Arbit2. Как программно ДИНАМИЧЕСКИ подключить нужную для данной ОС библиотеку ADO ?Просто открой коннект.


ArbitВариант 3 - ваш вариантИспользовать ADO надо в Visual Basic и его кузенах. Использовать ADO в С++ глупо. Абсолютно никакого выигрыша в удобстве написания кода, плюс потери на оверехеде конвертации данных между драйвером СУБД и клиентской программы.
ADO это враппер над ODBC и OLEDB драйверами предназначенный для встраивания в Visual Basic. В последствии ADO подтянули и в другие языки, но только в VB с ним работать удобно.
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361540
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Код: sql
1.
CoCreateInstance("ADODB.Connection")

и далее везде.


Спасибо, попробую!
А если стоит голая система без офиса или MSSQL, это тоже сработает?
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39361600
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

ADO это враппер чисто над OLEDB, ODBC живёт свой жизнью

Писанины на C++ с АDO несколько меньше чем с OLEDB



А топикстартер похоже слегка путает подключение dll для автогенерации
заголовков при компиляции с использованием COM при исполнении
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39364101
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил, ну слава богу, а то я уже почти загрустил! :)

Я еще только учусь, и наверно неправильно задал вопрос.

Приложение пишется под win32 (студия 2013)
Я использую класс ADODB для работы с базой данных
Заголовочный файл содержит следующую строку:

в win32 это будет
Код: plaintext
1.
#import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" rename("EOF","ADOEOF") rename("BOF","ADOBOF")


В win64 это будет
Код: plaintext
1.
#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename("EOF","ADOEOF") rename("BOF","ADOBOF")


[b]Мне нужно:

Определить разрядность системы и в зависимости от нее
прописать в заголовочном файле моего класса нужный вариант строки.
Вопрос - как это правильно прописать в заголовочном файле?

Еще вопрос:
Все ли "голые" системы windows: XP, Vista, 8.0, 8.1, 10
содержат в себе данную библиотеку msado15.dll , или нужно будет устанавливать на машине пользователя
MDAC нужной .версии? Если устанавливать MDAC, то какой и на какую версию windows

Спасибо
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39364102
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опять ерунду написал

Наоборот в win32 - Program Files
а в win64 - Program Files (x86)
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39364105
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbitпрописать в заголовочном файле моего класса нужный вариант строки.
Вопрос - как это правильно прописать в заголовочном файле?

Библиотеки зависят от разрядности приложения, не системы. Соответственно, скорее всего
будет работать так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
#ifdef _WIN64
#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename("EOF","ADOEOF") 
rename("BOF","ADOBOF")
#else
#import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" 
rename("EOF","ADOEOF") rename("BOF","ADOBOF")
#endif



Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39364106
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Библиотеки зависят от разрядности приложения, не системы. Соответственно, скорее всего
будет работать так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
#ifdef _WIN64
#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename("EOF","ADOEOF") 
rename("BOF","ADOBOF")
#else
#import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" 
rename("EOF","ADOEOF") rename("BOF","ADOBOF")
#endif



Спасибо, это то, что нужно!

А по второму вопросу?
Все ли "голые" системы windows: XP, Vista, 8.0, 8.1, 10
содержат в себе данную библиотеку msado15.dll, или нужно будет устанавливать на машине пользователя
MDAC нужной .версии? Если устанавливать MDAC, то какой и на какую версию windows?

Спасибо
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39364110
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Библиотеки зависят от разрядности приложения, не системы. Соответственно, скорее всего
будет работать так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
#ifdef _WIN64
#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename("EOF","ADOEOF") 
rename("BOF","ADOBOF")
#else
#import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" 
rename("EOF","ADOEOF") rename("BOF","ADOBOF")
#endif



Я тут подумал... наверное не совсем так...
Дело в том, что в 32- разрядных версиях windows ведь нет директории Program Files (x86) а есть только Program Files
Видимо нужно все=таки определить разрядность WINDOWS
или наличие или отсутствие в файловой системе директории Program Files (x86) и в зависимости от результата
в заголовочный файл подключать нужную строку?

Вопрос открытый
Спасибо
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39364114
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArbitДело в том, что в 32- разрядных версиях windows ведь нет директории Program Files (x86) а есть только Program Files

Видимо нужно все=таки определить разрядность WINDOWS
или наличие или отсутствие в файловой системе директории Program Files (x86) и в зависимости от результата
в заголовочный файл подключать нужную строку?
это нужно только при компиляции. что не знаешь где компилишься и под какую платформу?
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39364124
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилэто нужно только при компиляции. что не знаешь где компилишься и под какую платформу?
Да нет, в настройках компиляции все нормально.
И все работает,
Но если программа будет например на windows XP, то там директория Program Files , а не Program Files (x86)
И по моему разумению на строке
Код: plaintext
1.
#import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" rename("EOF","ADOEOF") rename("BOF","ADOBOF")


должна произойти ошибка, из-за неправильного пути?

Прости если туплю, ну не догоняю я этот момент.. :((
Помоги понять, пожалуйста
Спасибо
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39364128
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока писал - допер!
строка
Код: plaintext
1.
#import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" rename("EOF","ADOEOF") rename("BOF","ADOBOF")


нужна только компилятору. а готовый экзешник уже будет содержать все что нужно?
...
Рейтинг: 0 / 0
Выбор dll ADO в winXP win7 win8(8.1) и win10
    #39364182
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbitнужна только компилятору. а готовый экзешник уже будет содержать все что нужно?
да.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выбор dll ADO в winXP win7 win8(8.1) и win10
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]