Использование SQL в приложениях
В этой главе…
- SQL в приложении
- Совместное использование SQL с процедурными языками
- Как избежать несовместимости
- Код SQL, встроенный в процедурный код
- Вызов модулей SQL из процедурного кода
- Вызов SQL из RAD-инструмента
В предыдущих главах мы в основном рассматривали SQL-команды в отдельности, т.е. формулировалась задача обработки данных, и под нее создавался SQL-запрос. Такой подход, предполагающий интерактивное использование SQL, прекрасно подходит для изучения его возможностей, но в повседневной практике обычно SQL применяют по-другому.
Хотя синтаксис языка SQL похож на синтаксис английского языка, изучить SQL все равно нелегко. Подавляющее большинство сегодняшних пользователей им не владеют в достаточной мере. И можно предположить, что даже если эта книга и завоюет широкую популярность, то все равно подавляющее большинство компьютерных пользователей так никогда и не будут свободно владеть SQL. Если обычному пользователю поставить задачу, связанную с базой данных, он и не подумает садиться к терминалу и вводить оператор SELECT. Системные аналитики и разработчики приложений, свободно владеющие SQL, также не занимаются вводом разовых (ad hoc) запросов с консоли. Эти специалисты разрабатывают приложения, которые сами создают запросы.
Если вы собираетесь много раз выполнять одну и ту же команду SQL, необязательно каждый раз вводить ее заново. Напишите приложение и затем запускайте его столько раз, сколько нужно. Код SQL может быть частью приложения, но в этом случае он работает немного иначе, чем в интерактивном режиме.
SQL в приложении
В главе 2 SQL был назван неполным языком программирования. Для использования в приложении язык SQL необходимо комбинировать с процедурным языком, таким как Pascal, FORTRAN, Visual Basic, С, C++, Java или COBOL. У SQL есть как сильные, так и слабые стороны. У процедурных языков, имеющих другую структуру, также есть сильные и слабые стороны, но не такие, как у SQL. К счастью, сильные стороны SQL обычно компенсируют слабость процедурных языков, а сильные стороны процедурных языков проявляются как раз там, где SQL оказывается не на высоте. Если совместно использовать процедурные языки с SQL, можно создать мощные приложения с широким набором возможностей. Недавно появились объектно-ориентированные RAD-инструменты, которые позволяют встраивать код SQL в приложения, создаваемые из объектов, а не с помощью написания процедурного кода. В качестве примера таких инструментов можно привести Delphi и C++ Builder.
Внимание:
В предыдущих главах мы часто использовали звездочку ('*') для краткого обозначения всех столбцов в таблице. Если в таблице много столбцов, то звездочка помогает уменьшить ввод кода. Если же SQL применяется в прикладной программе, лучше раз и навсегда от нее отказаться. После того как приложение будет написано, вы или кто-то другой, возможно, добавите в таблицу новые столбцы или удалите старые. Однако в таком случае меняется значение понятия "все столбцы". Ваше приложение, когда оно указывает с помощью звездочки "все столбцы", может получить не те столбцы, на которые рассчитывает.
Такое изменение в таблице не окажет влияния на имеющиеся программы, пока для исправления ошибки или внесения какого-либо изменения эти программы не будут перекомпилированы. Тогда воздействие символа шаблона ('*') расширится на все имеющиеся столбцы. Это изменение может привести к аварийному завершению работы приложения, не связанному с текущей отладкой, или вызвать другие изменения, которые сделают отладку настоящим кошмаром.
Совет:
Чтобы обезопасить себя, указывайте имена всех столбцов в явном виде, а не полагайтесь на символ звездочки.