Запросы для Sql Server и Oracle - PullRequest
1 голос
/ 09 июля 2009

Я занимаюсь разработкой приложения asp.net с шаблоном фабрики баз данных, который позволяет приложению поддерживать и Sql Server, и Oracle. Я создал абстрактный класс, который имеет методы, общие для Sql Server и Oracle, такие как методы CreateConnection и CreateCommand. Этот класс реализуется классами SqlServer и Oracle. Теперь есть простой способ написания встроенных SQL-запросов с параметрами, общими как для Sql Server, так и для Oracle. Я имею в виду, я понимаю, что мы используем символ «@» в Sql Server и «:» в Oracle для параметров. Именно по этой причине я пишу запросы дважды в каждом классе. Есть ли способ написать такие запросы, общие для обеих баз данных? (или интерпретировать параметры из одного общего запроса?)

Спасибо.

Ответы [ 5 ]

1 голос
/ 10 июля 2009

Какой смысл использовать ORACLE и не использовать все его нестандартные функции (аналитика, сводки и т. Д.)? ORACLE - это мощный инструмент. У других БД тоже есть свои сильные стороны, так зачем использовать наименьший общий знаменатель, чтобы работать на ВСЕХ из них? Вы просто потеряете в производительности.

Просто выберите одну БД и используйте ее полностью со всеми функциями!

1 голос
/ 10 июля 2009

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

1 голос
/ 09 июля 2009

Единственный способ написать один запрос, который будет работать как для Oracle, так и для Sql Server, - это использовать только синтаксис, общий для обеих платформ. Как только вы используете функции, которые различаются между двумя языками (например, параметры или объединения), вы должны либо написать два разных запроса, либо собрать один класс «переводчик», который преобразует запрос с одной платформы на другую.

Я много занимался этим типом программирования (программное обеспечение, не зависящее от базы данных), и с помощью .Net относительно безболезненный способ сделать это - написать основное приложение, полностью работающее с ADO.Net DataTables / DataSets. с классом-оберткой, который обрабатывает создание DataTables из таблиц Oracle или Sql Server изнутри, а также обрабатывает постоянные изменения, сделанные в DataTables, обратно в Oracle или Sql Server. Этот подход изолирует ваш специфичный для БД код в одном месте, хотя это не обязательно жизнеспособный подход, если данные, к которым ваше приложение нуждается в доступе, большие.

0 голосов
/ 10 июля 2009

У меня были похожие требования для поддержки Sql Server и Oracle, и я подытожил свой двухлетний опыт решения таких проблем в следующих статьях:

Написание стандарта ANSI SQL нецелесообразно.

Как вы думаете, стандарт SQL ANSI полностью переносим между базами данных? Подумай еще раз.

0 голосов
/ 10 июля 2009

Прошу прощения за мое невежество здесь, но разве что-то вроде ORM (объектно-реляционного сопоставителя) не может работать как для SQL, так и для Oracle?

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