рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Обзор компонента TQuery

Работа сделанна в 2003 году

Обзор компонента TQuery - Курсовая Работа, раздел Программирование, - 2003 год - Компоненты Delphi для работ с БД Обзор Компонента Tquery. Сокращение Sql Означает Structured Query Language - ...

Обзор компонента TQuery. Сокращение SQL означает Structured Query Language - Язык Структурированных Запросов, и обычно произноситься либо как Sequel либо Ess Qu El. SQL - это мощный язык БД, который легко доступен из Delphi, но который отличается от родного языка Delphi. Delphi может использовать утверждения SQL для просмотра таблиц, выполнять объединение таблиц, создавать отношения один-ко-многим, или исполнить почти любое действие, которое могут сделать основные инструменты БД. 1. Большинство серверов могут обрабатывать SQL запросы очень быстро, а это означает, что используя SQL для удаленных данных, ответ будет получен очень быстро. 2. Есть возможность составлять SQL запросы, которые заставят сервер исполнить специализированные задачи, недоступные через родной язык Delphi.

SQL запрос можно создать используя компонент TQuery следующим способом 1. Назначить Псевдоним Alias DatabaseName. 2. Используя свойство SQL чтобы ввести SQL запрос типаSelect from Country. 3. Установить свойство Active в True Если обращение идет к локальным данным, то вместо псевдонима можно указать полный путь к каталогу, где находятся таблицы.

Объект TQuery один из наиболее полезных и гибких компонентов, доступных в Delphi.

С помощью можно воспользоваться всей мощью, предоставляемой лидерами среди промышленных SQL серверов, вроде InrterBase, Oracle или Sybase.

Свойство SQL Свойство SQL - вероятно, самая важная часть TQuery. Доступ к этому свойству происходит либо через Инспектор Объектов во время конструирования проекта design time, или программно во время выполнения программы run time. Интересней, конечно, получить доступ к свойству SQL во время выполнения, чтобы динамически изменять запрос.

Например, если требуется выполнить три SQL запроса, то не надо размещать три компонента TQuery на форме.

Вместо этого можно разместить один и просто изменять свойство SQL три раза. Наиболее эффективный, простой и мощный способ - сделать это через параметризованные запросы, которые будут объяснены в следующей части.

Однако, сначала исследуем основные особенности свойства SQL, а потом рассмотрим более сложные темы, типа запросов с параметрами.

Свойство SQL имеет тип TStrings, который означает что это ряд строк, сохраняемых в списке.

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

В следующих нескольких абзацах будут рассмотрены наиболее часто используемые свойства.

При программном использовании TQuery, рекомендуется сначала закрыть текущий запрос и очистить список строк в свойстве SQL Query1.Close Query1.SQL.Clear Нужно обратите внимание, что всегда можно безопасно вызвать Close. Даже в том случае, если запрос уже закрыт, исключительная ситуация генерироваться не будет. Следующий шаг - добавление новых строк в запрос Query1.SQL.Add Select from Country Query1.SQL.Add where Name Argentina Метод Add используется для добавления одной или нескольких строк к запросу SQL. Общий объем ограничен только количеством памяти на вашей машине.

Чтобы Delphi отработал запрос и возвратил курсор, содержащий результат в виде таблицы, можно вызвать метод Query1.Open Например, следующий SQL запрос Select form Country where Name like C возвращает DataSet, содержащий все записи, где поле Name начинается с буквы C . Следующий запрос позволит увидеть все страны, в названии которых встречается буква C Select from Country where Name like C Вот запрос, которое находит все страны, название которых заканчивается на ia Select from Country where Name like ia TQuery и Параметры Delphi позволяет составить гибкую форму запроса, называемую параметризованным запросом.

Такие запросы позволяют подставить значение переменной вместо отдельных слов в выражениях where или insert.

Эта переменная может быть изменена практически в любое время.

Если используется локальный SQL, то можно сделать замену почти любого слова в утверждении SQL, но при этом та же самая возможность не поддерживается большинством серверов. Перед тем, как начать использовать параметризованные запросы, рассмотрим снова одно из простых вышеупомянутых предложений SQL Select from Country where Name like C Можно превратить это утверждение в параметризованный запрос заменив правую часть переменной NameStr select from County where Name like NameStr В этом предложении SQL, NameStr не является предопределенной константой и может изменяться либо во время дизайна, либо во время выполнения.

SQL parser программа, которая разбирает текст запроса понимает, что он имеет дело с параметром, а не константой потому, что параметру предшествует двоеточие NameStr. Это двоеточие сообщает Delphi о необходимости заменить переменную NameStr некоторой величиной, которая будет известна позже.

Нужно обратите внимание, что слово NameStr было выбрано абсолютно случайно. Использовать можно любое допустимое имя переменной, точно также, как выбирается идентификатор переменной в программе.

Есть два пути присвоить значение переменной в параметризованном запросе SQL. Один способ состоит в том, чтобы использовать свойство Params объекта TQuery. Второй - использовать свойство DataSource для получения информации из другого DataSet. Вот ключевые свойства для достижения этих целей property ParamsIndex Word function ParamByNameconst Value string property DataSource Если подставлять значение параметра в параметризованный запрос через свойство Params, то обычно нужно сделать четыре шага 1. Закрыть TQuery 2. Подготовить объект TQuery, вызвав метод Prepare 3. Присвоить необходимые значения свойству Params 4. Открыть TQuery Второй шаг выполняется в том случае, если данный текст запроса выполняется впервые, в дальнейшем его можно опустить.

Вот фрагмент кода, показывающий как это может быть выполнено практически Query1.Close Query1.Prepare Query1.Params0.AsString Argentina Query1.Open Params - это индексированное свойство, которое имеет синтаксис как у свойства Fields для TDataSet. Например, можно получить доступ к первой переменной в SQL запросе, адресуя нулевой элемент в массиве Params Params0.AsString Argentina Если параметризованный SQL запрос выглядит так select from Country where Name NameStr то конечный результат т.е. то, что выполнится на самом деле - это следующее предложение SQL select from Country where Name Argentina Все, что произошло, это переменной NameStr было присвоено значение Аргентина через свойство Params.

Если в запросе содержится более одного параметра, для того чтобы иметь доступ к ним нужно изменить индекс у свойства Params Params1.AsString SomeValue либо используя доступ по имени параметра ParamByName NameStr. AsString Argentina Итак, параметризованные SQL запросы используют переменные, которые всегда начинаются с двоеточия, определяя места, куда будут переданы значения параметров.

Прежде, чем использовать переменную Params, сначала можно вызвать Prepare.

Этот вызов заставляет Delphi разобрать ваш SQL запрос и подготовить свойство Params так, чтобы оно было готово принять соответствующее количество переменных. Можно присвоить значение переменной Params без предварительного вызова Prepare, но это будет работать несколько медленнее.

После того, как был вызыван метод Prepare, и после того, как были присвоены необходимые значения переменной Params, Нужно вызвать метод Open, чтобы закончить привязку переменных и получить желаемый DataSet. В нашем случае, DataSet должен включать записи где в поле Name стоит Argentina. Open или ExecSQL После того, как составлен SQL запрос, есть два различных способа выполнить его. Если нужно получить курсор, то нужно вызывать Open. Если выражение SQL не подразумевает возвращение курсора, то нужно вызывать ExecSQL. Например, если происходит вставка, удаление или обновление данных т.е. SQL запросы INSERT, DELETE, UPDATE, то нужно вызывать ExecSQL. Тоже самое можно сказать по-другому Open вызывается при запросе типа SELECT, а ExecSQL - во всех остальных случаях.

Вот типичный SQL запрос, который используется для удаления записи из таблицы delete from Country where Name Argentina Этот запрос удалил бы любую запись из таблицы COUNTRY, которая имеет значение Argentina в поле Имя. Не трудно заметить, что это тот случай, когда удобно использовать параметризованный запрос.

Например, неплохо было бы менять имя страны, которую требуется удалить delete from Country where Name CountryName В этом случае переменная CountryName может быть изменена во время выполнения Query2.Prepare Query2.Params0 Argentina Query2.ExecSQL Код сначала вызывает Prepare, чтобы сообщить Delphi что он должен разобрать SQL запрос и подготовить свойство Params. Следующим шагом присваивается значение свойству Params и затем выполняется подготовленный SQL запрос.

Нужно обратите внимание, что он выполняется через ExecSQL, а не Open. 6. Сходства и различия TTable и TQuery Хотя компоненты TTable и TQuery и являются потомками класса TDataSet и во многом, методика работы с объектом TQuery похожа на методику работы с TTable, однако есть свои особенности. Поскольку в ряде случаев компоненты TTable и TQuery в приложениях взаимозаменяемы, то возникает вопрос какой же из них использовать При работе с локальными базами данных чаще используется Table. С его помощью проще не только просматривать таблицу базы данных, но и модифицировать записи, удалять их, вставлять новые.

Но при работе с клиент - серверными базами данных компонент Table становится мало эффективным. В этом случае он создает на компьютере пользователя временную копию серверной базы данных и работает с этой копией. Естественно, что подобная процедура требует больших ресурсов и существенно загружает сеть. Этот недостаток отсутствует в компоненте Query. Если запрос SQL сводится к просмотру таблицы запрос Select, то результат этого запроса а не сама исходная таблица помещается во временном файле на компьютере пользователя.

Правда, в отличии от набора данных, создаваемого Table, это таблица только для чтения и не допускает каких-то изменений. Впрочем, это ограничение можно обойти. Если же запрос SQL связан с какими-то изменениями содержания таблицы, то никаких временных таблиц не создается.

BDE передает запрос на сервер, там он обрабатывается и в приложение возвращается информация о том, успешно ли завершена соответствующая операция. Благодаря такой организации работы эффективность Query при работе в сети становится намного выше, чем эффективность Table. К тому же язык SQL,позволяет формулировать сложные запросы, которые не всегда можно реализовать в Table. С другой стороны при работе с локальными данных эффективность Query заметно ниже эффективности Table. Замедление вычислений получается весьма ощутимым.

Исходя из этого краткого обзора возможностей Table и Query, можно заключить, что в клиент серверных приложениях целесообразней использовать компонент Query, а при работе с локальными базами данных где не нужна мощь компонента Query проще использовать Table. 7.

– Конец работы –

Эта тема принадлежит разделу:

Компоненты Delphi для работ с БД

Обычно БД создается для хранения и доступа к данным, содержащим сведения о некоторой предметной области, то есть некоторой области человеческой… По своей архитектуре СУБД делятся на автономные, файл - серверные, клиент -… Сеть не используется. Автономные базы данных полезны для развития тех приложений, которые распространены среди многих…

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Обзор компонента TQuery

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Компоненты для работы с БД среды Delphi
Компоненты для работы с БД среды Delphi. Каждое приложение, использующее базы данных, обычно имеет по крайней мере по одному компоненту следующих типов Компоненты наборы данных Data set, непосредст

Основные приемы работы с TDataSet
Основные приемы работы с TDataSet. Открытие и закрытие DataSet Имеются два различных способа открыть таблицу во время выполнения программы. Можно написать следующую строку кода Table1.Open И

Обзор компонента TTable
Обзор компонента TTable. Так как компонент TTable является наследником класса TDataSet, он наследует все его свойства, методы и события. Он служит для работы с таблицами БД. Следующие методы позвол

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги