Как уже отмечалось ранее, взаимодействие приложения с БД осуществляется через источник данных, для которого задается уникальное на компьютере имя – псевдоним или, по-другому, альяс. Понятия псевдоним и источник данных часто отождествляют. Псевдонимы могут создаваться как с помощью утилиты BDE Administrator, так и с помощью утилиты SQL Explorer. Для обеих утилит этот процесс совершенно аналогичен.
Рассмотрим процесс создания псевдонимов. Откроем SQL Explorer, выбрав пункт Explorer из меню Database Delphi (C++Builder). Выберем пункт ODBC Administrator меню Object. Если данная операция запрещена, то необходимо запустить утилиту C:\WINNT\SYSTEM32\odbcad32.exe. На вкладке Пользовательский DSN нажмем кнопку Добавить. В открывшемся окне (рис. 3) выберем тип драйвера Microsoft SQL Server (или SQL Server) и нажмем кнопку Готово.
Далее (рис. 4) будет предложено ввести имя псевдонима БД, под которым к ней будем обращаться из клиентских приложений и имя сервера (например, WS208).
В качестве имени псевдонима следует указать какое-либо осмысленной буквосочетание, например, Supply, Transport, Нotel и т.д. В следующем окне необходимо выбрать пункт Проверка подлинности учетной записи SQL Server, что означает, что для доступа к серверу будет использовано имя и пароль, задаваемые на сервере, а не имя и пароль, под которым входили в систему. Следует также убрать флажок напротив надписи Получить параметры, используемые по умолчанию от SQL Server, чтобы не указывать имя и пароль для доступа к БД с расширенными полномочиями (в нашем случае это не надо).
В последующих окнах нужно все оставить без изменения, нажимая кнопку Далее и в конце Готово. Альяс будет создан. Обратите внимание, что в окне SQL Explorer альяс пока не появился (появится после закрытия и нового открытия приложения). Следует закрыть SQL Explorer и Borland Delphi (Borland C++Builder).
Далее следует связать альяс с уже созданной базой данных. Во всех рассматриваемых в дальнейшем примерах используется БД Поставка товаров, схема которой представлена на рис. 5.
Для лучшего усвоения материала необходимо создать БД Поставка товаров в СУБД SQL Server 2000. Содержимое таблиц представлено в табл. 1–3.
Далее установления связи альяса с базой данных нужно вновь открыть утилиту SQL Explorer, выбрать свой псевдоним (например, Supply) и ввести необходимые сведения о своей базе (рис. 6):
DATABASE NAME Поставка товаров (имя БД на сервере)
USER NAME sa (имя пользователя сервера)
Утвердить изменения, выбрав пункт Apply меню Object. Следует отметить, что эти сведения можно было ввести и раньше, при создании псевдонима.
Дважды щелкнуть по своему псевдониму, после чего в открывшемся окне ввести пароль, например, sa. Произойдет подключение к удаленной БД. Если в результате попытки подключения произойдет ошибка, повторить попытку.
В левой части окна выбрать пункт Tables и просмотреть сведения об имеющихся в БД таблицах (рис. 7). Просмотреть свойства своих таблиц (структуру полей).
С помощью утилиты SQL Explorer можно также отлаживать SQL запросы. Рассмотрим этот процесс.
С целью настройки программы на нормальное отображение русских букв выбрать пункт Text Font меню View и выбрать шрифт Courier вместо Courier New.
В правой части окна выбрать вкладку Enter SQL (рис. 8). В соответствующем поле ввода ввести текст SQL-запроса, после чего нажать кнопку (выполнить). В нижней правой части окна появятся результаты выполнения запроса. Далее можно вводить новый запрос. Список введенных запросов можно листать кнопками (стрелка вверх) и (стрелка вниз).
Теперь созданный псевдоним можно использовать в клиентских приложениях для доступа к БД
Скрипт создания базы данных Кинотеатры:
Use master
go
create database Kino2
on
(Name='Kino2_data',
Filename='d:\users\stud\547\Kino2_data.mdf',
SIZE=4,
MAXSIZE=10,
FILEGROWTH=1)
LOG ON
(NAME='Kino2_log',
FILENAME='d:\users\stud\547\Kino2_data.ldf', SIZE=4, MAXSIZE=10, FILEGROWTH=1)
GO
USE Kino2_data
GO
CREATE TABLE [dbo].[Кинотеатры] (
[№кинотеатра] [int] NOT NULL ,
[название кинотеатра] [char] (10) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[адрес] [char] (100) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[телефон кассы] [char] (10) COLLATE Cyrillic_General_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Сеансы] (
[№кинотеатра] [int] NOT NULL ,
[код фильма] [int] NOT NULL ,
[номер сеанса] [int] NOT NULL ,
[дата показа] [datetime] NOT NULL ,
[время показа] [datetime] NOT NULL ,
[стоимость] [money] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Фильмы] (
[Код фильма] [int] NOT NULL ,
[название] [char] (100) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[страна] [char] (10) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[год выпуска] [char] (10) COLLATE Cyrillic_General_CI_AS NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Кинотеатры] WITH NOCHECK ADD
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
[№кинотеатра]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Сеансы] WITH NOCHECK ADD
CONSTRAINT [PK_Сеансы] PRIMARY KEY CLUSTERED
(
[№кинотеатра],
[код фильма]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Фильмы] WITH NOCHECK ADD
CONSTRAINT [PK_Фильмы] PRIMARY KEY CLUSTERED
(
[Код фильма]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Сеансы] ADD
CONSTRAINT [FK_Сеансы_Кинотеатры] FOREIGN KEY
(
[№кинотеатра]
) REFERENCES [dbo].[Кинотеатры] (
[№кинотеатра]
) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT [FK_Сеансы_Фильмы] FOREIGN KEY
(
[код фильма]
) REFERENCES [dbo].[Фильмы] (
[Код фильма]
) ON DELETE CASCADE ON UPDATE CASCADE
GO
-- Создание умолчания
CREATE DEFAULT D1 AS 0 GO
-- Привязка умолчания к объектам
EXEC sp_bindefault 'D1','Сеансы.Стоимость'
GO
-- Создание правила
CREATE RULE R1 AS @X LIKE '[А-Я, а-я]%'
GO
-- Привязка правила к объектам
EXEC sp_bindrule 'R1','Кинотеатры.[название кинотеатра]'
go
Заполнение базы:
USE Kino2
GO
-- Заполнение таблицы Поставщики
INSERT INTO Кинотеатры ([№кинотеатра], [Название кинотеатра], Адрес, [Телефон кассы])
VALUES (1, 'Прогресс', 'Рязань', '451234')
INSERT INTO Кинотеатры ([№кинотеатра], [Название кинотеатра], Адрес, [Телефон кассы])
VALUES (2, 'Ока', 'Рязань', '920140')
INSERT INTO Кинотеатры ([№кинотеатра], [Название кинотеатра], Адрес, [Телефон кассы])
VALUES (3, 'Уют', 'Москва', '7651044')
INSERT INTO Кинотеатры ([№кинотеатра], [Название кинотеатра], Адрес, [Телефон кассы])
VALUES (4, 'Быт', 'Липецк', '381855')
-- Заполнение таблицы Товары
INSERT INTO Фильмы ([Код фильма], Название, страна, [год выпуска])
VALUES (1, 'Ложка', 'Китай', 10)
INSERT INTO Фильмы ([Код фильма], Название, страна, [год выпуска])
VALUES (2, 'Вилка', 'Китай', 12)
INSERT INTO Фильмы ([Код фильма], Название, страна, [год выпуска])
VALUES (3, 'Тарелка', 'Россия', 100)
INSERT INTO Фильмы ([Код фильма], Название, страна, [год выпуска])
VALUES (4, 'Нож', 'Китай', 50)
-- Заполнение таблицы Поставки
INSERT INTO Сеансы ([№кинотеатра], [код фильма], [номер сеанса], [дата показа],[время показа], стоимость)
VALUES (2, 1, 1,'16.06.2007','15:20:00', 100)
INSERT INTO Сеансы ([№кинотеатра], [код фильма], [номер сеанса], [дата показа],[время показа], стоимость)
VALUES (2, 2, 2,'16.06.2007','15:20:00', 200)
INSERT INTO Сеансы ([№кинотеатра], [код фильма], [номер сеанса], [дата показа],[время показа], стоимость)
VALUES (3, 1, 3,'16.06.2007','15:20:00', 200)
|