ADO или DBX с использованием Delphi

Что лучше (и по каким причинам) использовать для подключения к MS SQL, Oracle или Firebird из приложения Delphi Win32 -- ADO или DBX (Database Express)?

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

DBX также гибок, и я могу скомпилировать драйверы в мое приложение, не так ли?

Я действительно очень хочу иметь один источник, если это возможно, с возможностью варьировать базы данных в зависимости от ИТ-отдела/предпочтений клиента.

но что легче программировать, работает лучше, использует память наиболее эффективно? Есть еще что-то, что их отличает?

Спасибо, Ричард

3 ответов


ADO прост в использовании и есть, вы должны только убедиться, что установить драйвер клиента correponding на стороне клиента.

Я нашел DBX более гибким, и он лучше интегрирован в IDE и другие технологии, такие как DataSnap.

для той же цели, что и вы, я использовал DBX со сторонними драйверами из компания. Вы можете скомпилировать драйверы с вашим приложением, Если вы покупаете источники драйверов.


в начале Delphi люди хвалили поддержку мульти-СУБД в Delphi. Все любили BDE (потому что это был единственный способ сделать это).

но, глядя на клиентов более чем за последнее десятилетие, я видел устойчивое снижение поддержки нескольких СУБД в своих приложениях.

стоимость поддержки нескольких СУБД из одного приложения высока.

не только потому, что вы должны иметь знания о каждой СУБД, но и потому, что каждая СУБД имеет свой собственный набор особенностей, где вы должны адаптироваться для вашего уровня доступа к данным. Они включают не только различия в синтаксисе и базовых типах данных, но и стратегии оптимизации.

кроме того, некоторые СУБД лучше работают с ADO, некоторые лучше с прямым подключением (например, пропуская ваш клиент Oracle все вместе).

наконец, тестирование всех комбинаций вашего программного обеспечения с несколькими системами СУБД очень интенсивно.

Я участвовал в нескольких проекты, в которых мы должны были изменить бэкэнд СУБД и / или технологию доступа к данным (от BDE до DBX или от DBX до прямого подключения). Изменение бэкэнда всегда было намного более болезненным, чем изменение технологии доступа к данным. Многоуровневые подходы сделали их несколько проще, но увеличили степень свободы и тем самым усилия по тестированию.

некоторые из продуктов, которые я вижу, что поддержка мульти-СУБД находятся в вертикальных рыночных приложениях, где конечный клиент уже имеет собственную инфраструктуру СУБД, и приложение должно адаптироваться к этому. Например, в голландских правительственных областях Oracle была действительно сильной, но SQL Server также создал довольно пользовательскую базу.

поэтому вам нужно подумать о том, какие комбинации СУБД вы хотите поддерживать, не только с точки зрения функциональности, но и с точки зрения стоимости.

Если вы придерживаетесь одной СУБД, то нет смысла идти на общий уровень доступа к данным, такой как BDE, DBX или ADO: он платит выключите соединение как можно более прямым. Мой опыт научил меня, что эти комбинации работают хорошо:

надеюсь, это даст вам некоторое представление о возможностях и ограничениях поддержки нескольких СУБД из ваших приложений Delphi.

--jeroen