powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / ODBC или ADO? Что лучше? Как вы думаете?
25 сообщений из 48, страница 1 из 2
ODBC или ADO? Что лучше? Как вы думаете?
    #34244287
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Как Вы считаете, что лучше использовать (с точки зрения производительности) ODBC (а именно классы MFC для работы с ним) или же ADO.
Какие плюсы и минусы у обеих технологий? Каково Ваше мнение.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34244333
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ODBC конечно. Очень просто, легко, быстро и вообще сплошное удобство, но только в том случае если посылаешь лесом все оберточные ОО библиотеки.
Если хочешь писать с классами на С++ - бери ADO или OLE DB. ADO чуть лучше потому что ADO есть и под другие языки, а OLE DB - только С++, но OLE DB для C++ роднее :)

MFC обертка для ODBC - ни в коем случае.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34245150
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl MFC обертка для ODBC - ни в коем случае.
Почему?
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34246634
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikname White Owl MFC обертка для ODBC - ни в коем случае.
Почему?Слишком много глюков, слишком мало документации.
Намного лучше и проще сделать свою собственную обертку.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34246699
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlСлишком много глюков, слишком мало документации.
Намного лучше и проще сделать свою собственную обертку.
Как-то неподробно, откровенно говоря. Я пока на глюки не нарвался. Интересно было бы что-то узнать.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34246866
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глюки есть. Вот например глюк с получением данных из поля MEMO с помощью функции GetFieldValue, если там содержаться UNICODE данные. Вылазят сполшные кракозябры.

Также еще есть проблема описанная в следующем топике
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34246874
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял ODBC работает быстрее ADO?
Я к сожалению сейчас не могу позволить себе писать обвертку - не хватает знаний, а времени и совсем нет.
И все же, что будет работать быстрее ADO или MFC обвертка для ODBC?
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34246909
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что вы понимаете под быстрее ??
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34246978
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HomosumЯ так понял ODBC работает быстрее ADO?Если вспомнить про то, что ADO это всего-лишь уже скомпилированая обертка над ODBC или OLE DB драйверами (по выбору программиста) то ответ становится очевидным :)

HomosumИ все же, что будет работать быстрее ADO или MFC обвертка для ODBC?Ну "быстрее" в этом случае не очень имеет значение. Основное время будет тратиться на обработку запроса сервером, а потом выкачивание по сети результата запроса. Складировние результата в память по сравнению с этим уже ничего не значит.
Но то что ADO намного более умное, удобное и вылизаное это факт.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34247133
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ODBC нерекомендованная компанией Микрософт и поддерживается только из-за совместимости.

ADO - родная
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34247173
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LepsikODBC нерекомендованная компанией Микрософт и поддерживается только из-за совместимости.

ADO - роднаяА покажь где оно не рекомендовано?
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34247300
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ODBC Provider (MSDASQL)
The Microsoft Open Database Connectivity (ODBC) Provider is deprecated in Windows Vista, and you are strongly encouraged to use one of the native OLE DB Providers instead. Native OLE DB Providers provide better application stability and performance. Moreover, native OLE DB Providers will be supported in the future, whereas MSDASQL will not have any new features added to it, will not be available on 64-bit, and will not be accessible from the OLE DB NET Data Provider.

там много чего деприкатед.


http://msdn2.microsoft.com/en-us/library/ms692882.aspx
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34247302
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlADO это всего-лишь уже скомпилированая обертка над ODBC

вас кто-то серьезно обманул - посмотрите дерево провайдеров на сайте microsoft.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34248786
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikname White Owl MFC обертка для ODBC - ни в коем случае.
Почему?

потому, что обращение к БД в ЭМФЭЦЭ реализовано не плохо, а очень плохо. Для приложений типа хэллоу мир - покатит. А если что нить серьёзное, под серьёзный движок с длиной запроса в сикволе пару десятков тыщ байт и несколько десятков таблиц (и всё это в лёт на рантайме генериться) - не прокатит...

более того, грамотно написанные свои класики (там всего то 2-3 штучки) удобнее юзать...
например...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
		string strIn = "Select бла-бла-бла";
		m_pRec->ExecDirect(strIn, _FLT_);
		bool bFind = false;
		if(m_pRec->Fetch())
		{
			bool bDeleted = false;
			if((int)m_pRec->GetField( 1 ) == eSysId)
			{
				bFind = true;
				string strRet = m_pRec->GetField( 2 );
				int r = strRet.compare(rstrCat);
				if(r !=  0 )
				{
					bDeleted = true;
				}
				strRet = m_pRec->GetField( 3 );

и т.д...

с уважением
(круглый)
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34249633
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы меня простите, круглый, но я с вами категорически несогласный. Используя библиотеку от Rogue Wave - Objective Grid и просто работая с БД достаточно активно, я ни разу не нарвался на глюки от MS и от ODBC. Все ошибки были мои.


Я согласный с тем, что MS - must die и что там халявщики, я согласный, что все, кроме меня - идиоты, но долгий опыт разработки приучил меня к тому, что только 1% или меньше ошибок - не мои.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34249875
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор не указал, с какой конкретно СУБД он собирается работать. Для каждой БД существующие драйвера имеют очень разную степень глючности, так что универсального рецепта нет. Если исходить из того, что ОДБЦ дравер не глючен и отлажен, то мой выбор конкретно за ОО обертку поверх ОДБЦ.
Какое-то время назад я переходил с Борланд билдера на VC2003 и так-же как и автор искал для себя удобный способ работы с БД, такой-же удобный с точки зрения классов и удобства использования как и VCL. Основной каприз - ничего не хочу знать о хендлах, буферах и еще чего-то там низкоуровневом..
Чистый ОДБЦ - отпал, т.к чистый Си и надо писать свою С++ надстройку. Так-же как и автора топика у меня небыло ни времени ни желания заниматься этим самому. Хороших С++ ОО библиотеки мне тогда найти не удалось (правда позже оказалось, что существует очень проработанная C++ ОО библиотека).
Пробовал АДО. Купился - что это типа объетная либа и возможно ее будет удобно использовать.. На самом деле это АктивХ, который студия своими средствами (#import) импортирует в проект как библиотеку. Так-же в МСДН большинство хелпов по АДО - на бейсике и портировать красоты использования АктивХ с бейсика на С++ не так тривиально. Во вторых - объем кода, или вернее кол-во умных буковок которых нужно написать для открытие БД, вызова хранимой процедуры и обработки полученного набора данных превышал пределы желаемого намного. Т.е почти то-же что и ОДБЦ, но с другой стороны - АктивХ. Если хотите - могу заслать простейший проект, который вызывает одну ХП и выводит результаты ее работы - удовольствия от кода очень мало..
Так я пришел к QT. В общем это и есть объектная прослойка над ОДБЦ или родными библиотеками работы с БД. По правде говоря в реализации классов для работы с нативными библиотеками доступа к БД есть засады. Например при работе с firebird поддредживаются БД в юникод кодировке, т.е конвертить резльтаты юникод-строка БД надо самому.. Обертка над ОДБЦ меня вполне устраивает. Код работы с БД прост, понятен и очень внешне напоминает VCL.
Упрощенно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(db_name);
db.setUserName(db_user_name);
db.setPassword(db_user_pass);
db.open();
QSqlQuery my_query(db);
my_query.prepare("execute procedure MYPROC(:param1");
my_query.bindValue(":param1", "ssss");
bool res=my_query.exec();
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34249883
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niknameВы меня простите, круглый, но я с вами категорически несогласный. Используя библиотеку от Rogue Wave - Objective Grid и просто работая с БД достаточно активно, я ни разу не нарвался на глюки от MS и от ODBC. Все ошибки были мои.


Я согласный с тем, что MS - must die и что там халявщики, я согласный, что все, кроме меня - идиоты, но долгий опыт разработки приучил меня к тому, что только 1% или меньше ошибок - не мои.

честно говоря я про глюки и не глаголил дух противоречия ? Не говорил я про них - не потому, что не нарывался, а на вскидку щаз и не вспомню... я сказал про большой обмен с бд, большие сиквол запросы, большие по инвариантности ответы...в принцепе это чиссо моё мнение, основано на опыте. и личное наблюдение на этом форуме укрепляет данную кочку зрения. Посему Ваше заявление уважаю, как Ваш взгляд на весчи...Но не более...

по поводу мастдая - простите, это не мой лексикон... и если это щаз так принято хаять милкософт - то это не ко мне.. То, что плюсы - лично готов говорить о плюсах..Если есть минусы - готов лично говорить о минусах...Так, что не по адрессу..

удачи Вам
(круглый)
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34249977
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, я думал, что большие запросы - ответственность программиста, а не ODBC. Равно как и большой трафик. Про трафик - вообще не понятно, вы хотите сказать, что при использовании ODBC трафик больше, чем при использовании ADO или что-то ещё?
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34250115
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LepsikODBC Provider (MSDASQL)
The Microsoft Open Database Connectivity (ODBC) Provider is deprecated in Windows Vista, and you are strongly encouraged to use one of the native OLE DB Providers instead. Native OLE DB Providers provide better application stability and performance. Moreover, native OLE DB Providers will be supported in the future, whereas MSDASQL will not have any new features added to it, will not be available on 64-bit, and will not be accessible from the OLE DB NET Data Provider.

там много чего деприкатед.
http://msdn2.microsoft.com/en-us/library/ms692882.aspxТак там написано что MSDASQL признан устаревшим. Не ODBC, а MSDASQL! Не технология в целом, а один единственный драйвер поддерживающий эту технологию и реализующий прозрачный доступ к различным фактическим драйверам.
Сейчас реализуя коннект на ADO достаточно написать:
ADOConnect->ConnectionString = "DSN=something;UID=user;PWD=password"
И все. Уже можно коннектится, ADO по умолчанию попытается работать запустить драйвер коннекта к бд реализованый по ODBC технологии. Опять же, по умолчанию ADOConnect будет работать через MSDASQL. MSDASQL, получит строку с DSN, прочитает этот DSN, вытащит оттуда имя физического драйвера (который поставляется производителем базы данных) и передаст все управление ему. После этого MSDASQL выключается.
Если в Vista этот драйвер убирают, то теперь при коннекте через ADO надо будет обязательно использовать ключевое слово Provider в котором указывать какого типа драйвер надо использовать для фактического коннекта.


Lepsik White OwlADO это всего-лишь уже скомпилированая обертка над ODBC
вас кто-то серьезно обманул - посмотрите дерево провайдеров на сайте microsoft.
Дерево провайдеров это дерево провайдеров. А в данном вопросе надо сначала смотреть на список драйверов, потом уже на дерево провайдеров.
Какая физическая dll содержит в себе функции которые открывают TCP/IP сокеты и отсылает SQL запрос на сервер? По какой технологии сделана эта dll? Я имею на руках такие dll сделаные по технологиям ODBC (процедурный интерфейс для общения с БД) и OLE DB (объектно-сиплюсплюсный интерфейс для общения с БД). Для ADO я такой dll ни разу не видел. Все ADO коннекты делают вызовы к физическим драйверам сделаным по ODBC или OLE DB принципам.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34250120
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niknameИзвините, я думал, что большие запросы - ответственность программиста, а не ODBC. Равно как и большой трафик. Про трафик - вообще не понятно, вы хотите сказать, что при использовании ODBC трафик больше, чем при использовании ADO или что-то ещё?Колобок говорил про MFC обертку для ODBC. А не про чистые интерфейсы.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34250162
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и МФС обёртку хорошо бы сравнить с чьей-то. Иначе как-то абстрактно очень. Ясно, что можно сравнить, скажем, со специализированным классом, нацеленным на одну специфическую таблицу. Но ведь это будет неаккуратнеько.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34250188
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niknameНу и МФС обёртку хорошо бы сравнить с чьей-то. Иначе как-то абстрактно очень. Ясно, что можно сравнить, скажем, со специализированным классом, нацеленным на одну специфическую таблицу. Но ведь это будет неаккуратнеько.Читай что писал Ggg_old...

Мой личный выбор из всего многообразия оберток как не трудно догадаться - все в топку! :) Лично я предпочитаю работать с чистым ODBC, на языках в которых до ODBC напрямую достучаться сложно (в том же VB например) использую ADO. А на C или C++ чистый ODBC без оборачивания его в классы вообще.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34250349
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я собираюсь писать приложения для работы с нейронными сетями (научная работа), а там очень много итераций и много обращений к базе данных. Поэтому и встал вопрос о выборе технологии. Важны даже миллисекунды. Насчет базы данных еще точно не решил. Наверно для начала буду использовать MS Access и если получу результаты, то надо будет переходить на что либо более серьезное. Поэтому и важно, чтобы технология одинаково хорошо работала с любой базой данных или хотя бы с самыми распространенными. И разумеется вопрос поддержки данной технологии в дальнейшем тоже очень интересует.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34250375
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Homosumтам очень много итераций и много обращений к базе данных. Поэтому и встал вопрос о выборе технологии. Важны даже миллисекунды.эээээ.... эта.... как бы сказать чтоб не обидеть... читай внимательнее:
"Основное время будет тратиться на обработку запроса сервером, а потом выкачивание по сети результата запроса. Складирование результата в память по сравнению с этим уже ничего не значит."
Ты никогда не получишь ответа от БД через миллисекунду. Неважно какой интерфейс доступа к БД будет. Интерфейс - ничто. У тебя есть два больших тормоза - сама база данных и сеть. Не важно что ты выберешь в качестве интерфейса. Важно что ты выберешь в качестве сервера для базы данных и какой мощности компьютер отдашь под базу данных. И какой у этого компьютера будет дисковый массив.
Какая разница какую долю секунды твоя программа тратит чтобы положить циферку в память если эта самая цифрека прийдет к тебе из БД через час после запроса?
Сделай сначала скоростную базу данных, потом уже будешь об интерфейсе задумываться.
...
Рейтинг: 0 / 0
ODBC или ADO? Что лучше? Как вы думаете?
    #34250923
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl Homosumтам очень много итераций и много обращений к базе данных. Поэтому и встал вопрос о выборе технологии. Важны даже миллисекунды.эээээ.... эта.... как бы сказать чтоб не обидеть... читай внимательнее:
"Основное время будет тратиться на обработку запроса сервером, а потом выкачивание по сети результата запроса. Складирование результата в память по сравнению с этим уже ничего не значит."
Ты никогда не получишь ответа от БД через миллисекунду. Неважно какой интерфейс доступа к БД будет. Интерфейс - ничто. У тебя есть два больших тормоза - сама база данных и сеть. Не важно что ты выберешь в качестве интерфейса. Важно что ты выберешь в качестве сервера для базы данных и какой мощности компьютер отдашь под базу данных. И какой у этого компьютера будет дисковый массив.
Какая разница какую долю секунды твоя программа тратит чтобы положить циферку в память если эта самая цифрека прийдет к тебе из БД через час после запроса?
Сделай сначала скоростную базу данных, потом уже будешь об интерфейсе задумываться.

Я с вами полностью согласен, но в моей научной работе есть важный момент - очень обширная нейронная сеть со сложной топологией. Просто невозможно будет загрузить всю информацию в память. Причем сразу не известно какой кусок нейронной сети (какое ядро) может понадобиться в тот или иной момент. Поэтому обращение к базе данных будет очень интенсивным.

А теперь еще один вопрос. Может поможете советом, какую базу данных лучше выбрать в качестве сервера?
...
Рейтинг: 0 / 0
25 сообщений из 48, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / ODBC или ADO? Что лучше? Как вы думаете?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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