Хорошая идея сделать DLL-совместимую со всеми базами данных - PullRequest
2 голосов
/ 06 июня 2009

Мне было дано задание, чтобы получить возможность создания dll, которая принимает некоторые входные данные, такие как имя базы данных (Mysql, access, sql, oracle и т. Д.) И некоторые другие входные данные для генерации запроса, и на основании этого DLL должна вернуть набор записей в приложение.

Это хорошая идея? Если да, то какие входные данные я должен рассмотреть?

1 Ответ

4 голосов
/ 06 июня 2009

Это вполне выполнимо, проблемы возникают, когда вы сталкиваетесь с различными грамматиками SQL - посмотрите, как Hibernate справляется с этим с использованием диалектов.

Популярные базы данных - Oracle, Sybase, MS SQL Server, MySQL - имеют небольшие различия в допустимой грамматике SQL. По сути, производители реализовали и расширили ANSI SQL по-разному.

Самый простой случай, о котором я могу подумать, это когда вы назначаете псевдонимы именам столбцов, некоторые базы данных требуют этого:

SELECT x AS y FROM some_table

, в то время как другие требуют:

SELECT x y FROM some_table 

Есть еще много таких примеров, но суть в том, что при написании уровня абстракции запросов, который работает со всеми базами данных, вам необходимо абстрагироваться от концепции генерации SQL, чтобы ее можно было адаптировать к каждой базе данных, которую вы собираетесь поддерживать ( Как я уже сказал, Hibernate делает это, позволяя вам указать диалект, специфичный для используемой вами базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...