Динамический SQL против Статического SQL - PullRequest
1 голос
/ 09 июня 2009

В нашей текущей кодовой базе мы используем классы MFC db для соединения с DB2. Это весь старый код, который был передан нам другой командой разработчиков, поэтому мы знаем некоторую историю, но не все.

Большая часть кода абстрагируется от создания SQL-запросов с помощью таких функций, как Update () и Insert (), которые добавляют в строку, указанную вами, что-то вроде «INSERT INTO SCHEMA.TABLE». Это делается с помощью классов наборов записей, которые расположены поверх класса базы данных

Другим способом выполнения запросов SQL является их выполнение непосредственно в классе базы данных с использованием dbclass.ExecuteSQL (String).

Нам интересно, каковы плюсы и минусы каждого подхода. С нашей точки зрения, вызов ExecuteSQL () намного проще, так как нам не нужно писать другой класс и т. Д., Но для этого должны быть веские причины. мы просто не уверены, что они.

Любая помощь будет отличной!

Спасибо, Марк

Обновление ----

Я думаю, что я неправильно понял Динамический и Статический SQL. Я думаю, что наш код всегда использует Dynamic, поэтому мой вопрос на самом деле таков: должен ли я сам построить строки SQL и выполнить ExecuteSQL (), или это должно быть абстрагировано в классе для каждой таблицы в базе данных, как кажутся классы набора записей из mfc делать?

Ответы [ 2 ]

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

Потребительские классы ATL OLE DB - идеальный вариант. Помимо рисков внедрения (упомянутых Skurmedel), куча запросов со сцеплением строк станет невозможно поддерживать очень быстро.

Хотя классы ATL могут быть утомительными на начальном этапе, они обеспечивают преимущества строго типизированных и именованных столбцов, навигации по результатам, управления подключениями и сеансами и т. Д.

0 голосов
/ 09 июня 2009

Я бы попытался абстрагироваться, если в нем много операторов SQL. Управление десятками различных SQL-запросов быстро становится утомительным. Также легче проверить ввод таким образом.

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