Реферат по предмету "Компьютеры и цифровые устройства"


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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКА КАЗАХСТАН ИНСТИТУТ ЖЕТЫСУ КАФЕДРА ФИНАНСОВО-ЭКОНОМИЧЕСКИХ ДИСЦИПЛИН Юнусов Ринат ИСЭ 410а Компоненты для работы с базами данных TTable и TQuery курсовая работа Научный руководитель Шлембаев К.Т. Талдыкорган 2003 Содержание 1. Введение 22.

Компоненты для работы с БД среды Delphi 3. Наборы данных 3.1 Основные приемы работы с TDataSet 3.2 Основные свойства, методы и события TDataSet 74. Обзор компонента TTable 105. Обзор компонента TQuery. 116. Сравнение компонентов TTable и TQuery 157. Заключение 178. Приложение 18Список использованной литературы 21 1.

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

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

доступ, находится на том же самом компьютере. Сеть не используется. Автономные базы данных полезны для развития тех приложений, которые распространены среди многих пользователей, каждый из которых поддерживает отдельную базу данных. Это, например, приложения, обрабатывающие документацию небольшого офиса, кадровый состав небольшого предприятия, бухгалтерские документы. Каждый пользователь такого приложения манипулирует своими собственными

данными на своем компьютере. Пользователю нет необходимости иметь доступ к данным любого другого пользователя, так что отдельная БД здесь вполне приемлема. В данной курсовой работе будет приведен пример приложения работающего с автономными БД Справочник сотрудника ГИБДД, Приложение было разработано автором в среде Delphi 6, а сама БД в СУБД Paradox 2. Компоненты для работы с

БД среды Delphi 6 Каждое приложение, использующее базы данных, обычно имеет по крайней мере по одному компоненту следующих типов Компоненты наборы данных Data set, непосредственно связывающиеся с базой данных. Для BDE это такие компоненты, как Table, Query, Stored Proc, BDEClientDataSet. Для других технологий имеются аналогичные компоненты наборов данных.

Компонент источник данных Data source, осуществляющий обмен информацией между компонентами первого типа и компонентами визуализации и управления данными. Таким компонентом является DataSource. Компоненты визуализации данных и управления данными, такие, как DBGrid, DBTExt, DBEdit и множество других. Связь этих компонентов друг с другом и с базой данных можно представить схемой приведенной ниже Схема взаимодействия компонентов

Delphi с базой данных 3. Наборы данных Под набором данных НД понимается группа записей из одной или нескольких таблиц БД, доступная для компонентов-наборов TTable, TQuery или TStoredProc. Эти компоненты порождены от общего родительского класса TDBDataSet и наследуют все его свойства, методы и события.

Класс TDataSet TDataSet класс - один из наиболее важных объектов БД. Чтобы начать работать с ним, нужно взглянуть на следующую иерархию TDataSet TDBDataSet TTable TQuery TStoredProc TDataSet содержит абстрактные методы там, где должно быть непосредственное управление данными. TDBDataSet знает, как обращаться с паролями и то, что нужно сделать, чтобы подключиться к определенной таблице. TTable знает т.е. уже все абстрактные методы переписаны,

как обращаться с таблицей, ее индексами и т.д. TDataSet - инструмент, который используется например для открытия таблицы, и перемещения по ней. Конечно, не нужно непосредственно создавать объект типа TDataSet. Вместо этого, нужно использовать TTable, TQuery или других потомков TDataSet например, TQBE. На наиболее фундаментальном уровне, Dataset это просто набор записей, как изображено на рис.1

Рис.1 Любой dataset состоит из ряда записей каждая содержит N полей и указатель на текущую запись. В большинстве случаев DataSet будет иметь прямое, один к одному, соответствие с физической таблицей, которая существует на диске. Однако, в других случаях можно исполнять запрос или другое действие, возвращающие dataset, который содержит либо любое подмножество записей одной таблицы, либо объединение join между несколькими таблицами.

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

Active в True, так что может быть даже чуть более эффективно использовать свойство Active напрямую. Также, как имеются два способа открыть a таблицу, так и есть два способа закрыть ее. Самый простой способ просто вызывать Close Table1.Close Или можно написать Table1.Active False Навигация Перемещение по записям Большой набор методов и свойства TDataSet обеспечивает все, что нужно для доступа к любой конкретной

записи внутри таблицы Обзор их функциональных возможностей описан ниже в таблице методов класса TDadaSet. TDataSet.BOF - read-only Boolean свойство, используется для проверки, находится ли курсор в начале таблицы. Свойства BOF возвращает true в трех случаях После того, как файл был открыт После того, как вызвался метод TDataSet.First После того, как не выполнился вызов метода

TDataSet.Prior. Первые два пункта - очевидны. Когда открывается таблица, Delphi помещает курсор на первую запись когда вызывается метод First, Delphi также перемещает курсор в начало таблицы. Третий пункт, однако, требует небольшого пояснения после того, как вызывался метод Prior несколько раз, курсор мог добраться до начала таблицы, и следующий вызов

Prior будет неудачным - после этого BOF и будет возвращать True. Следующий код показывает самый общий пример использования Prior, когда курсор попадает к первой записи while not Table.Bof do Table1.Prior end Цикл будет продолжаться до тех пор, пока вызов Table1.Prior не сможет больше перемещать курсор на предыдущую запись в таблице.

В этот момент BOF вернет True и программа выйдет из цикла. Все сказанное относительно BOF также применимо и к EOF. Другими словами, код, приведенный ниже показывает простой способ пробежать по всем записям в a dataset Table1.First while not Table1.EOF do Table1.Next end EOF возвращает True в следующих трех случаях После того, как файл был открыт

После того, как вызвался метод TDataSet.Last После того, как не выполнился вызов метода TDataSet.Next Единственная навигационная процедура, которая еще не упоминалась - MoveBy, которая позволяет переместиться на N записей вперед или назад в таблице. Если необходимо переместиться на две записи вперед, то следует написать следующий оператор MoveBy2 или MoveBy-2 Prior и Next - это простые функции, которые вызывают

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

TDataSet property FieldsIndex Integer function FieldByNameconst FieldName string TField property FieldCount Свойство FieldCount возвращает число полей в текущей структуре записи. Если необходимо программным путем прочитать имена полей, то используется свойство Fields для доступа к ним var S String begin S Fields0.FieldName end

Короче говоря, индекс передаваемый в Fields начинающийся с нуля, и определяет номер поля к которому Вы получите доступ, т.е. первое поле - ноль, второе один, и так далее. Если Вы хотите прочитать текущее содержание конкретного поля конкретной записи, то используется свойство Fields или метод FieldsByName. Для того, чтобы найти значение первого поля записи, прочитайте первый элемент массива Fields S Fields0.AsString Предположим, что первое поле в записи содержит номер заказчика,

тогда код, показанный выше, возвратил бы строку типа 1021, 1031 или 2058. Если нужно получить доступ к этот переменный, как к числовой величине, тогда надо использовать AsInteger вместо AsString. Аналогично, свойство Fields включают AsBoolean, AsFloat и AsDate. Можно использовать функцию FieldsByName вместо свойства Fields S FieldsByName

CustNo .AsString Как показано в примерах выше, и FieldsByName, и Fields возвращают те же самые данные. Два различных синтаксиса используются исключительно для того, чтобы обеспечить программистов гибким и удобным набором инструментов для программного доступа к содержимому DataSet. Свойство Fields позволяет выбрать тип результата Вот список доступных методов который можно найти в описании класса

TField property AsBoolean property AsFloat property AsInteger property AsString property AsDateTime Всякий раз когда это имеет смысл, Delphi сможет сделать преобразования. Например, Delphi может преобразовывать поле Boolean к Integer или Float, или поле Integer к String. Но не будет преобразовывать String к Integer, хотя и может преобразовывать

Float к Integer. Основные свойства, методы и события НД Свойства Свойство Описаниеproperty Active BooleanОткрываетзакрывает НДproperty AutoCalcFields BooleanРазрешаетзапрещает возникновение события OnCalcFieldsType TBookmarksStr String property BookMark TBookMarkStrОпределяет закладку на текущей записи.

К помеченной записи можно быстро перейти методом GotoBookMarkproperty CanModify BooleanУказывает, может ли пользователь изменять НД property Database TDatabaseОпределяет компонент TDatabase, связанный с данным НД property DatabaseName StringСодержи псевдоним базы данныхproperty DataSource

TDataSourceИспользуется в потомках для указания детального НД, в связи один ко многимproperty EOF BooleanСодержит True, если курсор НД сместился за последнюю запись property FieldCount IntegerСодержит количество полей в НДproperty Fields TFieldsПозволяет обратиться к полям по их индексу.

Первое поле НД имеет индекс 0property FieldValuesconst FieldName String VariantПозволяет обратиться к значениям полей по имени поляproperty Filter StringЗадает фильтрующее выражениеproperty Filtered BooleanРазрешаетзапрещает фильтрацию записей НДtype TFilterOption foCaseInsensitive, foNoPartialCompare

TFilterOptions set of TFilterOption Определяет условия фильтрации в текстовых полях foCaseInsensitive учитывать регистр букв foNoPartialCompare поиск на точное соответствие образцуproperty Modifed BooleanСодержит True, если текущая запись НД была измененаproperty RecNo LongIntОпределяет номер текущей записиproperty RecordCount LongIntСодержит количество записей в текущем

НДtype TDataSetState dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc property State TDataSetState Указывает состояние НД dsInactive-закрыт , dsBrowse-просмотр, dsEdit-редактирование, dsInsert-вставка, dsSetKey-поиск записи, dsCalcFields-установка вычисляемых полей, dsFilter-фильтрация записей, dsNewValue-обновление, dsOldValue-обновление, dsCurValue-обновление, dsBlockRead-чтение блока

записей, dsInternalCalc-обновление Методы procedure AppendДобавляет пустую запись в конец НДprocedure AppendRecordconst Values Array of constДобавляет новую запись, заполняет ее поля значениями Values и отсылает ее в БДprocedure ApplyUpdatesЗаписывает кэш обновления в таблицы БДprocedure CancelОтменяет все изменения текущей записи, которые не были сохранены в

БДprocedure CancelUpdatesОчищает кэш обновленияprocedure CheckBrowseModeЕсли НД находился в состоянии редактирования или вставки, вызывает метод Post для записи изменений в БДprocedure ClearFieldsОчищает все поля текущей записиprocedure CloseЗакрывает НДprocedure CloseDatabaseDatabaseTDatabaseЗакрывает базу данных Databaseprocedure CommitUpdatesОчищает кэш после успешного обновления данных в

БДfunction ControlsDisabled BooleanВозвращает True, если показ данных в визуальных компонентах временно запрещен методом DisableControlsprocedure DeleteУдаляет текущую записьfunction DisableControlsВ целях улучшения производительности при навигации по НД временно запрещает смену данных в визуальных компонентахprocedure EditРедактирует текущую записьprocedure EnableCointrolsОтменяет действие метода

DisableControls function FieldByNameconst FieldName StringTFieldОбеспечивает доступ к полю по его имени FieldNamefunction FindFieldconst FieldName StringTFieldИщет поле FieldName в НД и возвращает ссылку на поле или NIL, если поле не найдено function FindFirst BooleanПытается установить курсор на первую запись

НД и возвращает True в случае успехаfunction FindLast BooleanПытается установить курсор на последнюю запись НД и возвращает True в случае успехаfunction FindNext BooleanПытается установить курсор на следующую запись НД и возвращает True в случае успехаfunction FindPrior

BooleanПытается установить курсор на предыдущую запись НД и возвращает True в случае успехаfunction First BooleanУстанавливает курсор на первую запись в НДprocedure FreeBookMarkBookMark TBookMark virtualОсвобождает память связанную с закладкой BookMarkfunction GetBookMark TBookMark virtualСоздает закладку на текущей записи и возвращает указатель

на нееprocedure GotoBookMarkBookMark TBookMarkОбеспечивает возврат к записи, связанной с закладкой BookMark procedure InsertПереводит НД в режим вставки записейprocedure InsertRecordconst Values array of constСоздает пустую запись, наполняет ее поля значениями Values и вставляет ее в НД function isEmpty BooleanВозвращает True, если в НД нет записейprocedure LastУстанавливает курсор на последнюю записьfunction

Locateconst KeyFields String const KeyValues Variant Options TLocateOptions BooleanИщет в полях перечисленных в параметре KeyFields, значения, указанные в KeyValues при условиях, заданных параметром Options. Если запись найдена, делает ее текущей и возвращает True function LookUpconst KeyFields String const KeyValues

Variant const ResultFields String VariantИспользуется в детальных НД для поиска в полях KeyFields значений KeyValues. При успехе возвращает значение полей ResultFieldsfunction MoveByDistance IntegerIntegerПеремещает курсор на Distance записей вверх или вниз относительно текущей записиprocedure NextПеремещает курсор к следующей записиprocedure

OpenОткрывает НДprocedure Post virtualСохраняет вставленную или отредактированную запись в таблице БД procedure PriorПеремещает курсор к предыдущей записиprocedure RefreshОбновляет НД данными из БДprocedure SetFields const Values array of constУстанавливает значения Values во все поля текущей записи События type TDataSetNotifyEvent procedure DataSet

TDataSet of objectproperty AfterCancel TDataSetNotifyEventВозникает сразу после отмены изменений в текущей записиproperty AfterClose TDataSetNotifyEventВозникает сразу после закрытия НДproperty AfterDelete TDataSetNotifyEventВозникает сразу после удаления текущей записиproperty AfterEdit TDataSetNotifyEventВозникает сразу после перехода НД в режим редактированияproperty AfterInsert TDataSetNotifyEventВозникает сразу после вставки записиproperty

AfterOpen TDataSetNotifyEventВозникает сразу после открытия НДproperty AfterPost TDataSetNotifyEventВозникает сразу после выполнения метода Postproperty AfterScroll TDataSetNotifyEventВозникает сразу после перехода к другой записиproperty BeforeCancel TDataSetNotifyEvent property BeforeClose TDataSetNotifyEventВозникает непосредственно перед отменой изменений в текущей записи

Возникает непосредственно перед закрытием НДproperty BeforeDelete TDataSetNotifyEventВозникает непосредственно перед удалением текущей записиproperty BeforeEdit TDataSetNotifyEventВозникает непосредственно перед переходом НД в режим редактированияproperty BeforeInsert TDataSetNotifyEventВозникает непосредственно перед в режим вставкиproperty BeforeOpen TDataSetNotifyEventВозникает непосредственно перед открытием

НДproperty BeforePost TDataSetNotifyEventВозникает непосредственно перед выполнением метода Postproperty BeforeScroll TDataSetNotifyEventВозникает непосредственно перед к новой записиproperty OnCalcFields TDataSetNotifyEventВозникает при необходимости переопределения вычисляемых полей 4. Обзор компонента TTable Так как компонент TTable является наследником класса TDataSet, он наследует все его свойства, методы и события.

Он служит для работы с таблицами БД. Следующие методы позволяют изменять данные, связанные с TTable procedure Append procedure Insert procedure Cancel procedure Delete procedure Edit procedure Post Все эти методы - часть TDataSet, они унаследованы и используются TTable и TQuery. Всякий раз, когда нужно изменить данные, необходимо сначала перевести

DataSet в режим редактирования или вставки. Имеется типичная последовательность, которую можно бы использовать при изменении поля текущей записи Table1.Edit Table1.FieldByName CustName .AsString Fred Table1.Post Первая строка переводит БД в режим редактирования. Следующая строка присваивает значение Fred полю CustName . Наконец, данные записываются на диск, когда вызывается

Post. При использовании такого подхода, Вы всегда работаете с записями. Сам факт перемещения к следующей записи автоматически сохраняет данные на диск. Например, следующий код будет иметь тот же самый эффект, что и код показанный выше, плюс этому будет перемещать курсор на следующую запись Table1.Edit Table1.FieldByName CustNo .AsInteger 1234 Table1.Next Общее правило, которому нужно следовать - всякий раз, когда курсор

сдвигается с текущей записи, введенные данные будут записаны автоматически. Это означает, что вызовы First, Next, Prior и Last всегда выполняют Post. Можете отменить результаты редактирования в любое время, до тех пор, пока не вызвали напрямую или косвенно метод Post. Например, если НД переведен в режим редактирования, и данные были изменены в одном или более полей, всегда можно вернуть запись в исходное состояние вызовом метода

Cancel. Существуют два метода, Append и Insert, который используются при добавлении новой записи в DataSet. Очевидно имеет больше смысла использовать Append для DataSets которые не индексированы, но Delphi не будет генерировать exception если используется Append на индексированной таблице. Фактически, всегда можно использовать и Append, и Insert. Пример добавления записи begin Table1.Insert

Table1.FieldByNameName.AsString Иван Table1.FieldByNameFam.AsString Сидоров Table1.Post end Удаление записи Table1.Delete Процедура показанная здесь сначала переводит таблицу в режим вставки новая запись с незаполненными полями вставляется в текущую позицию dataset. После вставки пустой записи, следующим этапом нужно назначить значения одному или большему количеству полей. Существует, конечно, несколько различных путей присвоить

эти значения. В программе можно просто ввести информацию в новую запись через DBGrid. Или разместить на форме стандартную строку ввода TEdit и затем установить каждое поле равным значению, которое пользователь напечатал в этой строке Table1.FieldByName Name .AsString Edit1.Text Можно использовать компоненты, специально предназначенные для работы с данными в DataSet, например DBEdit, DBLabel и т.д.

5. Обзор компонента 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. Заключение Какой компонент выбрать при разработке приложений баз данных Table или Query Ответ на этот вопрос не сложен. Если приложение клиент серверное, то однозначно целесообразней использовать компонент Query, поскольку во-первых, он более гибок и гораздо мощнее

Table, а во-вторых не загружает сеть, а если база данных локальная, то во многих случаях можно обойтись Table, так как работа с ним гораздо проще и где не требуется мощь SQL - запросов он вполне может заменить Query. 8. Приложение Чтобы показать реальную работу компонентов Delphi для работы с базами данных я приведу пример приложения работающего с БД Справочник сотрудника ГИБДД. Цель данного приложения - учет автомобилей их характеристик,

данные о их владельцах, различных нарушениях допущенных ими, а также сведения о тех.осмотрах. База данных состоит из 6 таблиц 1. Autos данные о автомобилях 2. Colors цвета 3. Construction типы кузова 4. Driver данные о водителях 5. Marks марки автомобилей 6. Ugon данные о угнанных автомобилях рис 1. Главная форма приложения Работа приложения начинается с подключения к

БД с помощью пункта меню БД-Подключиться или нажатия комбинации клавиш AltC. Отключение БД-ОтключитьсяВыход или нажатие клавиши F10. Пункт меню Работа содержит в себе следующие подпункты Поиск автомобиля рис.2 и Приглашение на тех.осмотр рис.3. В первом подпункте ведется поиск, имеется возможность поиска транспортного средства по различным критериям.

рис 2. Форма для поиска транспортного средства рис 3. Форма транспортных средств подлежащих тех.осмотру Во втором подпункте меню Работа, ведется работа с владельцами транспортных средств, просрочивших дату тех.осмотра. Имеется возможность поиска владельца по фамилии, а также возможность печати приглашения на технический осмотр транспортного средства. Вид окна печати данного приглашения приведен на рис.

4. рис 4. Вид окна отчета Приглашение на теx.осмотр Также через пункты меню производится вызов справочников для работы с данными. В приложении существует 6 видов справочников автомобили, водители, марки, тип кузова, цвет, угнанные автомобили. Основным справочником является справочник Автомобили рис.6, здесь сосредоточены данные обо всех автомобилях и их владельцах зарегистрированных

в базе данных. рис 5. Справочник автомобилей Список использованной литературы 1. В.Фаронов Программирование баз данных в Delphi 6 Питер 2003 2. А.Я.Архангельский Программирование в Delphi 6 Бином 2003 3. В.Бобровский Delphi 5 Питер 2001 4. И.Ю.Баженова Delphi 5 Самоучитель программиста Кудиц-Образ 2001



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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Интуиция как вид творческого мышления
Реферат Описание связывания объектов, импорт и экспорт таблиц Excel
Реферат Подросток и эмоции
Реферат Интерперсональная коммуникация в медиасфере
Реферат От чего зависит судьба гена
Реферат Статистичне вивчення населення Рівненської області
Реферат Crucible Lying Essay Research Paper Notes for
Реферат Особенности активных методов обучения в высшей школе
Реферат Принципы дегазации и защита от поражения
Реферат Вибір й оцінка ефективності процедур кодування даних
Реферат Опыт участия государства в регулировании социально-трудовых отношений и социальные трансферты
Реферат Коммуникативное поведение в организации
Реферат Криминально-психологические аспекты правовой культуры на уровнях индивида, группы, общества
Реферат Креативность
Реферат Приборы комплекса Контар контроллеры МС8 МС5 модули релейные MR8