Создание приложения для работы с базой данных «телефонная книжка». 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание приложения для работы с базой данных «телефонная книжка».



1) Создать новый проект.

2) Создать модуль данных командой File >> New >> Data Module.

3) Расположить в модуле данных два компонента TTable с вкладки BDE и два компонента TDataSourse с вкладки Data Access.

4) Для обоих компонентов TTable в свойстве Database Name выбрать псевдоним базы данных TestAlias, в свойстве TableName выбрать соответствующие таблицы, выставить свойство Activ в True.

5) Компонент Table1 переименовать в PeopleTbl при помощи свойства Name, а компонент Table2 – в TelTbl. Также компоненту DataSource1 надо дать имя PeopleSrc, а DataSource2 – TelSrc.

6) Сохранить проект целиком.

7) Связать попарно компоненты таблиц и источников данных. При помощи свойства Dataset надо увязать PeopleTbl с PeopleSrc, а TelTbl c TelSrc.

8) Определить отношения между таблицами. Для этого выбрать в свойстве MasterSource компонента TelTbl родительский источник данных PeopleSrc. Далее в свойстве Master Fields этого же компонента необходимо указать поля, по которым будет установлена связь. В правой части свойства необходимо нажать на кнопку. Появится диалоговое окно, содержащее два списка – Master Fields и Detail Fields. В них перечислены поля, по которым можно создать связь. В обоих списках надо выбрать поля IDPeople и нажать кнопку Add. Будет создана связь между таблицами.

9) Затем на Form1 (основная форма приложения) необходимо добавить два компонента DBGrid, располагающихся на вкладке Data Controls. В строке uses формы необходимо подключить модуль DB, а также модуль данных по его имени (по умолчанию – unit2).

10) Теперь необходимо связать компоненты DBGrid с компонентами TDataSource при помощи свойства DataSource.

 

42.

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

Курсор — ссылка на контекстную область памяти. Курсор — это сущность, устанавливающая соответствие с результирующим набором и указывающая на одну из его строк.

Текущая запись

Событие Текущая запись (Current) происходит, когда очередная запись получает фокус или выполняется повторное обращение к источнику данных формы — таблице или запросу. Таким образом, оно возникает как при открытии формы, так и при переходе от одной записи к другой. Чаще всего это событие используется для синхронизации записей в связанных формах.

Навигация по набору данных

Перемещение по записям набора данных осуществляется при помощи группы специальных методов. Физически переход на новую запись означает очистку буфера текущей записи (см. выше) и загрузку в него новых значений полей из требуемой записи. С текущей записью набора данных связано понятие курсора набора данных.

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

function TDataSet.MoveBy(Distance: Integer): Integer;

Положительное число означает перемещение к концу набора данных, отрицательное — к началу. Например, перемещение на одну запись назад осуществляется методом prior:

procedure TDataSet.Prior;

begin

MoveBy(-l);

end;

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

43.

Отчет (report) — это объект базы данных, который используется для вывода на экран, в печать или файл структурированной информации.


Информационная технология управления направлена на создание различных видов отчетов. Регулярные отчеты создаются в соответствии с установленным графиком, опре­деляющим время их создания, например месячный анализ продаж компании.

Специальные отчеты создаются по запросам управленцев или когда в компании произошло что-то незапланированное. И те, и другие виды отчетов могут иметь форму суммирующих, сравнительных и чрезвычайных отчетов.

В суммирующих отчетах данные объединены в отдельные группы, отсортирова­ны и представлены в виде промежуточных и окончательных итогов по отдельным полям.

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

Чрезвычайные отчеты содержат данные исключительною (чрезвычайного) характера.

Конструктор состоит из пяти секций:
Report Header? Заголовок отчета. Эта секция печатается один раз? в начале отчета.
Page Header? Верхний колонтитул. Печатается вверху каждой страницы. На первой странице печатается после ReportHeader.
Details? Секция данных. Здесь печатаются данные из базы данных.
Page Footer? Нижний колонтитул. Печатается внизу каждой страницы.
Report Footer? завершающая часть отчета. Печатается в конце отчета.

 

44.

Технология ADO обеспечивает универсальный доступ к источникам данных из приложений базы данных. Такую возможность предоставляют функции набора интерфейсов, созданные на основе общей модели объектов СОМ и описанные в спецификации OLE DB.

Технология ADO и интерфейсы OLE DB обеспечивают для приложений единый способ доступа к источникам данных различных типов. Например, приложение, использующее технологию ADO, может применять одинаково сложные операции и к данным, хранящимся на корпоративном сервере SQL, и к электронным таблицам, и локальным системам управления базами данных. Запрос SQL, направленный любому источнику данных через технологию ADO, будет выполнен.

Согласно терминологии ADO, любой источник данных (база данных, электронная таблица, файл) называется хранилищем данных, с которым при помощи провайдера данных взаимодействует приложение. Минимальный набор компонентов приложения может включать объект соединения, объект набора данных, объект процессора запросов [15, c. 348]. Технология ADO в целом включает в себя не только сами объекты OLE DB, но и механизмы, обеспечивающие взаимодействие объектов с данными и приложениями. На этом уровне важнейшую роль играют провайдеры технологии ADO, координирующие работу приложений с хранилищами данных различных типов.

Провайдеры ADO обеспечивают соединение приложения, использующего данные через ADO, с источником данных. Провайдер знает о

 

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

Такая архитектура позволяет сделать набор объектов и интерфейсов открытым и расширяемым. Набор объектов и соответствующий провайдер может быть создан для любого хранилища данных без внесения изменений в исходную структуру ADO.

Так как технология ADO основана на стандартных интерфейсах СОМ, которые являются системным механизмом Windows, это сокращает общий объем работающего программного кода и позволяет распространять приложения базы данных без вспомогательных программ и библиотек.

Базовые объекты ADO произведены корпорацией Microsoft и входят в комплект поставки Delphi. Базовых объектов семь: Connection, Recordset, Command, Parameter, Field, Error и Property.

Connection

Объект Connection используется для установления связи с источником данных. С его помощью производится настройка параметров соединения, объект Connection обеспечивает механизм транзакций. На него может ссылаться произвольное количество объектов Command и Recordset. В этом случае Connection управляет транзакциями этих объектов. С объектом связан набор объктов Error, в котором фиксируются все ошибки, связанные с работой объкта Connection.

RecordSet

Объект Recordset представляет набор записей, полученных из источника данных. Этот объект может применяться для добавления, удаления, обновления и просмотра наборов записей. С объектом Recordset автоматически связывается набор объектов Field, в которых описываются все поля наборов данных. При создании объекта автоматически создается и связанный с ним курсор, обеспечивающий просмотр, редактирование и изменение записей.

Command

Объект Command содержит команду, которая применяется к источнику данных. Команды могут представлять собой простые SQL - операторы или вызовы хранимых процедур. В последнем случае используется набор объектов Parameter объекта Command для указания информации о индивидуальных параметрах: объеме, типе данных, направлении передачи и значении. При обнаружении ошибки с объектом связываестя коллекция объектов Error.

Parameter

Объект Parameter определяет единственный параметр, который будет использоваться при выполнении метода Execute объекта Command, тип параметра, размер и способ применения (входной, выходной, входной и выходной или только для чтения). При необходимости с объектом Command можно связать коллекцию объектов Parameter для указания множества параметров.

Error

Коллекция объектов Error хранит все ошибки, связанные с работой остальных объектов, и прежде всего объектов Connection, Command и Recordset.

Field

Объект Field хранит всю необходимую информацию об одном поле набора данных. Поскольку набор данных обычно содержит несколько полей, с объектом Recordset связана коллекция объектов Field. С любым полем Field можно связать произвольную коллекцию объектов Property, определяющих индивидуальные характеристики поля.

Property

Объект Property может быть связан с любым другим объектом ADO, кроме объектов Connection и Error. Он может хранить как статические, так и динамические свойства. Статических свойств у объекта всего четыре: Name, Type, Value и Attributes. Остальные свойства динамические и создаются в ходе выполнения программы.

45.

Удаленная база данных

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

Программа работы с удаленной базой данных состоит из двух частей: клиентской и серверной. Клиентская часть программы, работающая на компьютере пользователя, обеспечивает взаимодействие с серверной программой: посредством запросов, передаваемых на удаленный компьютер, предоставляет доступ к данным.

Серверная часть программы, работающая на удаленном компьютере, принимает запросы, выполняет их и пересылает данные клиентской программе. Запросы представляют собой команды, представленные на языке SQL (Structured Query Language) — языке структурированных запросов.

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

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

Разработка программы работы с удаленной базы данных — сложная и трудоемкая задача. Ее решение предполагает наличие у разработчика глубоких знаний и большого опыта разработки программного обеспечения. Поэтому в данной книге задача разработки удаленных баз данных не рассматривается.

Архитектура клиент-сервер основана на распределении функций между двумя типами независимых и автономных процессов: серверами и клиентами. Сеть связывает воедино серверы и клиенты, предоставляя средства связи.

Если вся обработка данных происходит на стороне сервера, а клиент выполняет только функции интерфейса с пользователем, то клиентское приложение называют «тонким» клиентом. Если часть обработки данных происходит на стороне клиента — то «толстым» клиентом.

Архитектура клиент-сервер включает в себя три основных компонента:

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

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

3. Коммуникационное промежуточное программное обеспечение передачи данных (ППО). Представляет собой любой компьютерный процесс, посредством которого клиенты и серверы взаимодействуют друг с другом. Это ПО называют еще уровнем коммуникаций. ППО обычно привязано к сети. Все клиентские запросы и ответы сервера передаются по сети в форме сообщений, в которых содержатся управляющая информация и данные.

InterBase выгодно отличается от многих других серверов следующими качествами:

• Высокая производительность и надежность при минимальных требованиях к ПК.

• Поддержка стандарта SQL-92, что позволяет обеспечить переносимость программ.

• Относительно низкая стоимость продукта (с Delphi поставляется сервер InterBase с

бесплатной лицензией на 5 клиентов, этого достаточно для разработки БД и

приложения, но обычно недостаточно для развертывания сервера в организации).

• Простота управления и поддержки сервера. InterBase имеет простой и удобный

механизм администрирования БД, не требующий специальных знаний.

 

Поскольку InterBase является "родным" для Delphi сервером БД и не требует для своей работы установки дополнительных драйверов, а также, принимая во внимание все вышесказанное, мы остановимся именно на нем. Средств самой Delphi вполне достаточно для программирования приложений, работающих с InterBase, однако имеются разработки и сторонних производителей - компоненты, программы для облегчения администрирования

Типы столбцов, которые могут использоваться в таблицах сервера InterBase, перечислены в табл. 11.1.

Таблица 11.1. Типы данных для сервера InterBase
Тип столбца Размер, байт Описание
SMALLINT 2 - Целочисленные значения от -32 768 до +32 767
INTEGER   Целочисленные значения от-2 147 483 648 до +2 147 483 647
FLOAT   Вещественные числа до 7 значащих цифр в диапазоне от 3,4х10-38 до 3,4х10+38

продолжение &

Таблица 11.1 (продолжение)

Тип столбца Размер, байт Описание
DOUBLE PRECISION   Вещественные числа до 15 значащих цифр в диапазоне от 1,7х10-308 до 1,7х10+308
NUMERIC или DECIMAL Переменный Вещественные числа с фиксированной запятой. При определении этого типа дополнительно указывается общее количество значащих цифр числа и количество цифр в дробной части
CHAR(n) или CHARACTER 0-32 767 Текстовый столбец длиной до п символов
VARCHAR(n) или 0-32 767 Текстовый столбец переменной длины,
CHARACTER] VARYING   содержащий до п символов
DATE   Дата в пределах от 01.01.0100 до 11.12.5941. Также может хранить сведения о времени
BLOB Переменный Любой тип двоичных данных

47.

Перед созданием новой базы данных необходимо создать папку, в которой она будет

храниться, утилита IBConsole не создает папки на диске, так что для этого придется

использовать средства Windows или файловый менеджер. Создайте папку

C:\DataBases

Далее откройте утилиту IBConsole, подключитесь к локальному серверу (команда "Login").

Выберите команду "Database -> Create Database"

 

В выделенной строке Filename(s) следует вписать путь и имя создаваемого файла. Впишите

C:\DataBases\first.gdb

В строку Size (Pages) ничего вписывать не нужно.

Далее следует раздел Options, ниже следует описание пунктов этого раздела.

Размер страницы

Пункт Page Size указывает размер страницы в базе данных, по умолчанию он равен 4096 байт.

InterBase позволяет использовать следующие размеры страниц (в байтах):

Выберите для нашей БД третий диалект.

Оставьте галочку Register database (Регистрация базы данных), а в поле Alias впишите

псевдоним нашей базы: first. Нажмите кнопку "OK", и в результате будет создан файл

C:\DataBases\first.gdb

который и является базой данных. Псевдоним базы данных появится в дереве серверов

 

48.

Создайте новое приложение, и разместите на форме сетку DBGrid, навигатор DBNavigator и

кнопку так же, как в прошлых примерах.

На сетку поместите один компонент DataSource с вкладки DataAccess, и с вкладки InterBase

следующие компоненты: IBDatabase, IBTransaction, IBTable и IBQuery.

Компонент IBDatabase выполняет подключение к базе данных, все остальные компоненты

вкладки соединяются с БД через него.

Все действия с базой данных происходят на уровне транзакций, компонент IBTransaction как

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

IBTransaction, соединенный с IBDatabase. В сложных многозвенных базах данных таких

транзакций может быть несколько. Вообще, имеется возможность для каждого набора данных

(IBTable или IBQuery) использовать собственный компонент IBTransaction с различными

настройками. Однако делать так не рекомендуется. Обычно наборы данных разделяют на

группы, например, НД только для чтения, НД только для записи, НД для чтения/записи с

мягкими или жесткими условиями соединения (об этом в следующих лекциях). В этом случае

для каждой группы наборов данных выделяют свой компонент IBTransaction.

Компоненты IBTable и IBQuery почти ничем не отличаются от простых Table и Query.

Итак, выделите компонент IBDatabase. Через его свойство DatabaseName найдите и

подключите файл First.gdb. Далее откройте свойство Params (откроется окно редактора). В

окне впишите следующие параметры:

user_name=sysdba

password=masterkey

lc_ctype=win1251

Далее выделите компонент IBTransaction и в его свойстве DefaultDatabase выберите нашу БД

IBDatabase1.

Затем выделите таблицу IBTable1, переименуйте ее в TTovar (свойство Name), в свойстве

Database выберите IBDatabase1. При этом в свойстве Transaction таблицы автоматически

должен появиться компонент транзакций IBTransaction1. Если по каким то причинам этого не

случилось, выберите его вручную. В свойстве TableName установите таблицу Tovar, а свойство

Active переведите в True - таблица открыта.

Теперь выделим запрос IBQuery1. Свойство Name переименуем в Q1, в свойстве Database

выберем IBDatabase1. И у этого компонента в свойстве Transaction автоматически должна

появиться транзакция IBTransaction1.

Осталось только связать DataSource с таблицей TTovar, а сетку и навигатор - с DataSource.

Код нажатия на кнопку такой же, как в предыдущих примерах.

 

49.

Триггерами называются подпрограммы, которые всегда выполняются автоматически

на стороне сервера, в ответ на изменение данных в таблицах БД.

создание триггера

CREATE TRIGGER <имя_триггера> FOR <имя_таблицы>

[ACTIVE | INACTIVE]

{BEFORE | AFTER} {DELETE | INSERT \ UPDATE}

[POSITION <число>]

AS

[DECLARE [VARIABLE] <переменная тип_данных>;]

BEGIN

<операторы_триггера>

END

Удаление триггера

После того как триггер стал ненужным или даже мешает работе, его следует удалить. Выполнение этой операции осуществляется с помощью команды DROP TRIGGER, имеющей следующий синтаксис:
DROP TRIGGER {trigger} [,...n]
Единственный аргумент trigger задает имя триггера, который необходимо удалить. Так как имя триггера уникально в пределах базы данных, то указание имени таблицы не требуется. С помощью одной команды DROP TRIGGER можно удалить несколько триггеров, перечислив их имена через запятую.
Для иллюстрации использования команды DROP TRIGGER выполним удаление триггера auth_tr1, с которым мы работали в предыдущих двух разделах:
DROP TRIGGER auth_tr1<.вдЮ

{BEFORE | AFTER} {DELETE | INSERT | UPDATE}

Таблица 7.1 Варианты возможных событий триггера

Комбинация Описание

параметров

BEFORE INSERT Триггер вызывается до создания новой строки. Такой триггер обычно

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

можно изменить входные значения, или сгенерировать значение для какого

либо поля.

AFTER INSERT Триггер вызывается после создания новой записи, и не позволяет менять

значения полей. Обычно такой триггер используют для модификации других,

связанных таблиц.

BEFORE DELETE Триггер вызывается перед удалением записи. Чаще всего его используют для

реализации бизнес-правил.

AFTER DELETE Триггер вызывается после удаления записи. Его также используют для

реализации бизнес-правил, либо модификации других таблиц.

BEFORE UPDATE Триггер вызывается перед принятием новых значений в поля записи.

Позволяет менять входные значения.

AFTER UPDATE Триггер вызывается после принятия изменений в запись. Не позволяет

менять значения. Обычно используется для модификации связанных таблиц.

50.

Храни́мая процеду́ра — объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. Хранимые процедуры очень похожи на обыкновенные процедуры языков высокого уровня, у них могут быть входные и выходные параметры и локальные переменные, в них могут производиться числовые вычисления и операции над символьными данными, результаты которых могут присваиваться переменным и параметрам.

<определение_процедуры>::={CREATE | ALTER } PROC[EDURE] имя_процедуры [;номер][{@имя_параметра тип_данных } [VARYING ] [=default][OUTPUT] ][,...n][WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION }][FOR REPLICATION]AS sql_оператор [...n]

Удаление хранимой процедуры осуществляется командой:

DROP PROCEDURE {имя_процедуры} [,...n]

51.

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

 

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

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

транзакции).

Если транзакция завершилась неуспешно, оригинал записи так и остается оригиналом.

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

Однако могут возникать и конфликты транзакций. Предположим, что стартовала транзакция Т1.

Она создала версию записи, и поменяла ее данные. В это время стартовала конкурирующая транзакция Т2, и создала версию той же записи. Поскольку Т1 еще не завершилась, Т2 при старте не могла видеть изменения данных, сделанные Т1, а значит, создала свою версию из старого оригинала. Теперь Т1 завершает работу по Commit. Как должен поступить InterBase? Если он пометит версию записи Т1 как оригинал, а старую запись, как удаленную, то в версии Т2 окажутся ложные данные! Действия InterBase в этом случае будут зависеть от параметров этих транзакций, о чем ниже мы поговорим подробней.

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



Поделиться:


Последнее изменение этой страницы: 2016-04-19; просмотров: 228; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.200.197 (0.119 с.)