Автор работы: Пользователь скрыл имя, 23 Сентября 2013 в 11:04, курсовая работа
Structured Query Language представляет собой непроцедурный язык, используемый для управления данными реляционных СУБД. Термин <непроцедурный> означает, что на данном языке можно сформулировать, что нужно сделать с данными, но нельзя проинструктировать, как именно это следует сделать.
Все операторы языков программирования, заключенные между символами <%...%> будут обрабатываться на компьютере веб-сервера. Остальные операторы будут переданы на выполнение браузеру пользователя.
Нет необходимости в том, чтобы СУБД и веб-сервер находились на одной и той же машине. Когда мы задаем имя источника данных ODBC, вы можете выбрать базу данных, которая находится на другом компьютере и доступна с компьютера веб-сервера.
Объектная модель ADO, является надстройкой к объектной модели OLE DB. Объект Connection, представляющий соединение с источником данных, - это первый объект ADO, который необходимо создать и который является основой для всех остальных.
Рис.2.6. объектная модель ADO
Имея соединение, разработчик может создать один или несколько наборов записей (объект RecordSet) и одну или несколько команд (объект Command). Все ошибки, которые генерируются в процессе создания любого из этих объектов и работы с ним, ADO будет помещать в специальную коллекцию Errors. Каждый объект RecordSet имеет коллекцию полей (Fields); каждое поле (объект Field) в этой коллекции соответствует столбцу в наборе записей. Кроме того, каждая команда имеет коллекцию параметров (Parameters), элементы которой представляют переданные команде параметры.
После создания таблиц можно приступить к манипуляциям с данными: вводить данные в таблицы, извлекать их из таблиц, проверять и изменять структуру таблиц. Для манипулирования структурой таблиц используются команды определения данных рассмотренные выше, а для манипулирования данными – объекты DataSet или DataReader платформы .NET.
Объект DataSet обычно представляет подмножество записей, которые извлекаются из базы данных. Оно концептуально аналогично таблице (а в некоторых случаях – группе связанных полей), но также содержит несколько важных собственных свойств. Объекты DataSet можно легко представить в виде XML-данных и использовать для передачи удаленных данных (как например, при передаче результатов выполнения запроса от сервера к клиенту или при обмене данными между двумя серверами). В Visual Basic.NET объекты DataSet не ограничены только сохранением извлеченных данных, он может использоваться для управления статическими данными в XML-документе или файле конфигурации, либо для управления динамическими данными, созданными на основе пользовательских данных в более сложных ситуациях.
Как и при работе с технологией ADO, в Visual Basic.NET и ADO.NET можно использовать подключенные и неподключенные объекты DataSet. Неподключенный объект DataSet с данными передаётся приложению, соединение с базой данных закрывается, а базе данных ничего не известно о манипуляциях с этими данными до тех пор, пока приложение вновь не обратится к базе данных. Если пользователь открывает форму и щелкает на кнопке для обновления данных. В таком случае приложение должно снова соединиться с базой данных и выполнить код изменения данных. В тоже время с помощью подключенного объекта DataSet используемые данные «блокируются» и все изменения мгновенно воспроизводятся в базе данных.
Объект DataReader работает аналогично объекту DataSet, но обладает другими возможностями и характеристиками производительности. Одно из отличий отражено в его названии: объект DataReader считывает данные, т.е. он предоставляет доступ к данным только для чтения. Для объекта DataReader также не предусмотрен простой способ представления данных в формате XML.
Данные операторы являются ведущими для работы в WEB-приложениях.
Назначение этого приложения состоит в том, чтобы продемонстрировать создание и обработку набора данных. Для того чтобы показать работу ASP.NET предложено два вида работы веб-приложения. Первый вид – как приложение работы с существующей базой данных в режиме пользователя. Второй вид – приложение для тестирования знаний sql-запросов.
Цель инфологического
Материк |
Вулкан |
Регион | |||
Код_материка |
Код_материка |
Код_страны | |||
|
Название |
Код_вулкана |
|
Код_региона | |
Площадь |
Наименование |
Наименование | |||
Город | |||||
Остров |
Море |
Код_региона | |||
Код_материка |
Код_океана |
Код_города | |||
Код_острова |
Код_материка |
Наименование | |||
Наименование |
Код_моря |
Численность_населения | |||
Наименование |
|||||
Гора |
Площадь |
||||
Код_материка |
|||||
|
Код_горы |
Страна |
|||
Наименование |
Код_материка |
||||
высота над уровнем моря |
Код_страны |
||||
Наименование |
|||||
Океан |
Столица |
||||
Код_океана |
Форма_правления |
||||
Наименование |
Площадь_страны |
||||
Численность населения |
Рис. 3. 1 Инфологическая модель.
Логическая модель данных
Девять сущностей находятся в третьей нормальной форме, т.е. все атрибуты сущностей содержат атомарные значения (значения в домене не являются ни списками, ни множествами простых или сложных значений); каждый не ключевой атрибут полностью зависит от первичного ключа; никакой не ключевой атрибут не зависит от не ключевого атрибута.
Рис.3.2. Логическая схема
Физическая модель базы данных
Создадим базу данных «Колумб»
USE [master]
GO
/****** Object: Database [columbus] Script Date: 05/12/2013 00:21:08 ******/
CREATE DATABASE [columbus] ON PRIMARY
( NAME = N'columbus', FILENAME = N'с:\geogragia\columbus.mdf' , SIZE = 4096KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'columbus_log', FILENAME
= N'с:\geogragia\columbus_log.
GO
Затем создадим таблицы:
Таблицу «Материк»
USE [columbus]
GO
/****** Object: Table [dbo].[materik] Script Date: 05/12/2013 00:24:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[materik](
[kod_materik] [numeric](18, 0) NOT NULL,
[naimenovanie] [nvarchar](50) NOT NULL,
[ploshad] [nvarchar](50) NULL,
CONSTRAINT [PK_materik] PRIMARY KEY CLUSTERED
(
[kod_materik] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Заполним таблицу «Материк»
NSERT INTO [columbus].[dbo].[materik]
([kod_materik]
,[naimenovanie]
,[ploshad])
VALUES
(1, 'Awstralia','7 692 024 km');
INSERT INTO [columbus].[dbo].[materik]
([kod_materik]
,[naimenovanie]
,[ploshad])
VALUES
(2, 'Asia','43 400 000 km');
INSERT INTO [columbus].[dbo].[materik]
([kod_materik]
,[naimenovanie]
,[ploshad])
VALUES
(3, 'Afrika','29 200 000 km');
INSERT INTO [columbus].[dbo].[materik]
([kod_materik]
,[naimenovanie]
,[ploshad])
VALUES
(4, 'Europa','10 200 000 km');
INSERT INTO [columbus].[dbo].[materik]
([kod_materik]
,[naimenovanie]
,[ploshad])
VALUES
(5, 'Okeania','1 300 000 km');
INSERT INTO [columbus].[dbo].[materik]
([kod_materik]
,[naimenovanie]
,[ploshad])
VALUES
(6, 'North America','24 250 000 km');
INSERT INTO [columbus].[dbo].[materik]
([kod_materik]
,[naimenovanie]
,[ploshad])
VALUES
(7, 'South America','17 800 000 km');
GO
Таблица «Океан»
CREATE TABLE [dbo].[okean](
[kod_okean] [numeric](18, 0) NOT NULL,
[naimenowanie] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_okean] PRIMARY KEY CLUSTERED
(
[kod_okean] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Заполним таблицу «Океан»
INSERT INTO [columbus].[dbo].[okean]([kod_
VALUES (1, 'Атлантический океан');
INSERT INTO [columbus].[dbo].[okean]([kod_
VALUES (2, 'Индийсий океан');
INSERT INTO [columbus].[dbo].[okean]([kod_
VALUES (3, 'Северный Ледовитый океан');
INSERT INTO [columbus].[dbo].[okean]([kod_
VALUES (4, 'Тихий океан');
GO
Создадим таблицу «Гора»
CREATE TABLE [dbo].[gora](
[kod_materik] [numeric](18, 0) NOT NULL,
[kod_gora] [numeric](18, 0) NOT NULL,
[naimenovanie] [nvarchar](50) NOT NULL,
[wisota] [nchar](10) NULL
) ON [PRIMARY]
Таблица. «гора»
Создадим таблицу «город»
CREATE TABLE [dbo].[gorod](
[kod_region] [numeric](18, 0) NOT NULL,
[kod_gorod] [numeric](18, 0) NOT NULL,
[naimenovanie] [nvarchar](50) NOT NULL,
[chislennost] [nvarchar](50) NULL,
CONSTRAINT [PK_gorod] PRIMARY KEY CLUSTERED
(
[kod_gorod] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Таблица «город»
Создадим таблицу «море»
CREATE TABLE [dbo].[more](
[kod_okean] [numeric](18, 0) NOT NULL,
[kod_materik] [numeric](18, 0) NOT NULL,
[kod_more] [numeric](18, 0) NOT NULL,
[naimenovanie] [nvarchar](50) NOT NULL,
[ploshad] [nvarchar](50) NULL,
CONSTRAINT [PK_more] PRIMARY KEY CLUSTERED
(
[kod_more] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Создадим таблицу «остров»
CREATE TABLE [dbo].[ostrow](
[kod_materik] [numeric](18, 0) NOT NULL,
[kod_ostrov] [numeric](18, 0) NOT NULL,
[naimenovanie] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_ostrow] PRIMARY KEY CLUSTERED
(
[kod_ostrov] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Создадим таблицу «Регион»
CREATE TABLE [dbo].[region](
[kod_strani] [numeric](18, 0) NOT NULL,
[kod_region] [numeric](18, 0) NOT NULL,
[naimenovanie] [nvarchar](50) NULL,
CONSTRAINT [PK_region] PRIMARY KEY CLUSTERED
(
[kod_region] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Создадим таблицу «страна»
CREATE TABLE [dbo].[strana](
[kod_materik] [numeric](18, 0) NOT NULL,
[kod_strana] [numeric](18, 0) NOT NULL,
[naimenovanie] [nvarchar](50) NOT NULL,
[stolica] [nvarchar](50) NOT NULL,
[forma_pravlenia] [nvarchar](50) NULL,
[chislenost] [nvarchar](50) NULL,
CONSTRAINT [PK_strana] PRIMARY KEY CLUSTERED
(
[kod_strana] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Создадим таблицу «Вудкан»
CREATE TABLE [dbo].[vulkan](
[kod_materik] [numeric](18, 0) NOT NULL,
[kod_vulkan] [numeric](18, 0) NOT NULL,
[naimenovanie] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_vulkan] PRIMARY KEY CLUSTERED
(
[kod_vulkan] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Создание представления
Создадим представление «Гора»
Рис. Создание представления
Создание таблицы в БД средствами ASP.
На страницу управления кнопку серверный контрол <asp:Button и подвязываем её на обработчик события CreateTable:
Protected void CreateTable(object sender, EventArgs e)
{
Using (SqlConnection con =
New SqlConnection(
ConnectionStrings[“
ConnectionString))
{
String query = “CREATE TABLE Vulkans” +
“(id UniqueIdentifier CONSTRAINT PKeyid PRIMARY KEY,” +
“vulkansName NVARCHAR(30))”;
SqlCommand sqlCom = new SqlCommand(query, con);
try
{
con.Open();
sqlCom.ExecuteNonQuery();
con.Close();
Result.Text = “Таблица создана”;
}
Catch { Result.Text = “Таблица не создана”;}
}
}
Метод очень прост. Переменная query содержит инструкцию создания таблицы с 2 полями:
Выполнение запроса к БД происходит через обычный метод ExecuteNonQuery();. Если в ходе выполнения метода возникает exception, то мы ловим его в блоке catch.
Использование представлений (View)
Представление (View) виртуальная таблица, которая формируется на основе запроса Select. Раз это таблица, хотя и виртуальная, к ней можно написать запрос, как и к простой таблице. Но обязательно нужно учитывать, что сначала создается представление, а потом будет выполняться наш запрос который направлен к представлению.
На форме размещаем одну кнопку и датагрид. Создадим класс CountryCitys:
Class CountryCitys
{
Public string Country {get; private set;}
Public string Region {get; private set;}
Public string City {get; private set;}
Public CountryCitys(string country, string region, string city)
{
Country = country;
Region = region;
City = city;
}
Теперь в обработчике нажатия по кнопке впишем следующий код:
Private void button1_Click(object sender, EventArgs e)
{
//строка соединения с БД
String connectionString =
@”Data Source=Columbus;
Initial Catalog=Geographiya;
Integrated Security=true;”;
//запрос
String query = @”Select ‘В государстве ‘, [Country],
‘в регионе ‘ , [Region], ‘ города ‘ , [City]
From CountryView”;
//объект соединения с БД
SqlConnection con =
new SqlConnection(
//создаем команду
SqlCommand cmd=
new SqlCommand(query, con);
try
{
con.Open();
using (SqlDataReader dr = cmd.
{
List<Country>
if (dr.
{
while
{
dr[4].ToString()+
dr[5].ToString()
}
}
if (list.