close

Вход

Забыли?

вход по аккаунту

?

лаб5вар11

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ВОСТОЧНОУКРАИНСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ
ИМ. В. ДАЛЯ
КАФЕДРА "СИСТЕМНАЯ ИНЖЕНЕРИЯ"
"Новые информационные технологии"
Лабораторная работа №5
Изучение технологии ADO.NET 2.0. Взаимодействие с базой данных с помощью DBCommand
Выполнил:студент:Леденёв А.А.
группа:КТ- 792
Проверил:Балалаечников А.В.
Луганск 2014 г.
Вариант 11
Цель. Ознакомиться с технологией ADO.NET 2.0. Научиться разрабатывать приложения,
взаимодействующих с сервером баз данных, используя объектную модель ADO.NET 2.0.
Задание. Используя методические указания к лабораторной работе, разработать приложение баз данных, взаимодействующие с MS SQLServer. Использовать DBCommand для создания и заполнения таблиц. Создайте таблицы для хранения названий областей, таблицу для хранения названий городов и таблицу для хранения названий улиц. Определите в каждой таблице первичные ключи. Обеспечьте целостность данных на основе внешних ключей.
Выполнение:
Открыл MS Server 2008 R2 и создаk новую базу данных testDBz29310 Создал новый проект в VisualStudio. Выполнил Tools/ Connect to Database и Выбрал сервер MS SQL Server:
Настрил соединение с вашей базой данных.
Создал процедуру для соединения с базой данных. Процедура выполняется по нажатию кнопки "Создать". Объявил переменную connString для хранения строки соединения. Присвоил переменной значение свойства ConnectionString ServerExplorer (данные для соединения с БД). Для этого выполнил View/Server Explorer:
В появившемся окне выберите созданное соединение:
В бланке свойств соединение перешел к параметру ConnectionString:
Параметры строки соединения: Data Source - сервер баз данных, Initial Catalog - имя базы данных, Integrated Security - безопасный вариант подключения.
Для установки параметров соединения необходимо использовать параметры строки соединения локально либо глобально:
string сonnString = @"Data Source=ПК-ПК\SQLEXPRESS;Initial Catalog=testDBz29310;Integrated Security=True";
Для открытия соединения добавил в код вызов метода Open():
private void butCreate_Click(object sender, EventArgs e)
{
using (SqlConnection cn = new SqlConnection(сonnString))
{
cn.Open();
}
}
Создал код для мониторинга состояния соединения. Для этого использовал события класса SqlConnection:
- InfoMessage - возникает, когда поступает сообщение или предупреждение;
- StateChange - возникает при изменении свойства соединения State.
Добавил соответствующие обработчики:
static void cn_StateChange(object sender, StateChangeEventArgs e)
{
MessageBox.Show("Состояние изменено с " + e.OriginalState + " на " + e.CurrentState);
}
static void cn_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
MessageBox.Show("Сервер говорит, что" + e.Message);
}
Привел имеющийся код к виду:
private void butCreate_Click(object sender, EventArgs e)
{
using (SqlConnection cn = new SqlConnection(сonnString))
{
cn.StateChange += new StateChangeEventHandler(cn_StateChange);
cn.InfoMessage += new SqlInfoMessageEventHandler(cn_InfoMessage);
cn.Open();
}
}
Изучил использование объектов DBCommand. Объекты DBCommand дают возможность выполнять разнообразные запросы. Одни из них возвращают данные в форме набора результатов, а другие изменяют структуру хранилища данных. Типы запросов:
- DML-запросы для изменения содержимого БД (INSERT, UPDATE, DELETE);
- DDL-запросы изменяют структуру БД (CREATE TABLE, ALTER VIEW, DROP
PROCEDURE).
Структура таблицы областей: столбец region_id для хранения суррогатного первичного ключа и столбец region_name для хранения названия области.
Объявил переменную sqlStrDrop для хранения строки удаления таблицы.
Присвоил переменной значение "drop table regions_list; ".
Объявил переменную sqlStrCreate для хранения строки создания таблицы. Присвоил переменной значение, содержащее синтаксис для создания таблицы.
string sqlStrCreate = "create table regions_list(region_ID int identity(1,1), region_name varchar(25));";
SqlCommand cmd = cn.CreateCommand();
cmd.CommandText = sqlStrDrop + sqlStrCreate;
cmd.ExecuteNonQuery();
Добавил кнопку для добавления первичного ключа в таблицу regions_list.
private void butPrimaryKey_Click(object sender, EventArgs e)
{
using (SqlConnection cn = new SqlConnection(сonnString))
{
cn.Open();
SqlCommand cmd = cn.CreateCommand();
cmd.CommandText = "Alter table regions_list add primary key(region_ID);";
cmd.ExecuteNonQuery();
} }
Добавил кнопку для заполнения таблицы.
private void AddInf_Click(object sender, EventArgs e)
{
using (SqlConnection cn = new SqlConnection(сonnString))
{
cn.Open();
SqlCommand cmd = cn.CreateCommand();
cmd.CommandText = "INSERT INTO regions_list VALUES('Автономна республіка Крим');" +
"INSERT INTO regions_list VALUES('Вінницька');" +
"INSERT INTO regions_list VALUES('Волинська');" +
"INSERT INTO regions_list VALUES('Дніпропетровська');"+
"INSERT INTO regions_list VALUES('Донецька');"+
............
"INSERT INTO regions_list VALUES('Чернигівська');" ; cmd.ExecuteNonQuery();
} }
Определил код ошибки, возникающий при попытке удаления несуществующей
таблицы. Вывел соответствующее сообщение на экран. Модифицировал код таким образом, чтобы при перехвате данной ошибки в блоке catch выполнялась только вставка таблицы (без удаления таблицы).
try
{
cmd.CommandText = sqlStrDrop;
cmd.ExecuteNonQuery();
cmd.CommandText = sqlStrCreate;
cmd.ExecuteNonQuery();
}
catch (SqlException sql)
{
MessageBox.Show(sql.ToString(),
"Таблица не существовала в базе, но была успешно создана ",
MessageBoxButtons.OKCancel,
MessageBoxIcon.Information);
cmd.CommandText = sqlStrCreate;
cmd.ExecuteNonQuery();
}
Добавил кнопку для чтения данных из БД. private void butReadTable_Click(object sender, EventArgs e)
{
using (SqlConnection cn = new SqlConnection(сonnString))
{
cn.Open();
SqlCommand cmd = cn.CreateCommand();
cmd.CommandText = "SELECT region_name FROM regions_list;";
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
listBox1.Items.Add(rdr[0]);
}
rdr.Close();
} }
Объединил в функции повторяющийся код
Добавил кнопки для создания, заполнения и отображения таблиц с данными о населенных пунктах и улицах.
private void create_table(string sqlStrCreate, string sqlStrDrop)
{
using (SqlConnection cn = new SqlConnection(сonnString))
{
//cn.StateChange += new StateChangeEventHandler(cn_StateChange);
//cn.InfoMessage += new SqlInfoMessageEventHandler(cn_InfoMessage);
cn.Open();
SqlCommand cmd = cn.CreateCommand();
try
{
cmd.CommandText = sqlStrDrop;
cmd.ExecuteNonQuery();
cmd.CommandText = sqlStrCreate;
cmd.ExecuteNonQuery();
}
catch (SqlException sql)
{
MessageBox.Show(sql.ToString(),
"Таблица не существовала в базе, но была успешно создана ",
MessageBoxButtons.OKCancel,
MessageBoxIcon.Information);
cmd.CommandText = sqlStrCreate;
cmd.ExecuteNonQuery();
}
}
}
private void ReadTable(string sqlStr)
{
using (SqlConnection cn = new SqlConnection(сonnString))
{
cn.Open();
SqlCommand cmd = cn.CreateCommand();
cmd.CommandText = sqlStr;
SqlDataReader rdr = cmd.ExecuteReader();
listBox1.Items.Clear();
while (rdr.Read())
{
listBox1.Items.Add(rdr[0]);
}
rdr.Close();
}
}
private void SqlRequest(string request)
{
using (SqlConnection cn = new SqlConnection(сonnString))
{
//cn.StateChange += new StateChangeEventHandler(cn_StateChange);
//cn.InfoMessage += new SqlInfoMessageEventHandler(cn_InfoMessage);
cn.Open();
SqlCommand cmd = cn.CreateCommand();
cmd.CommandText = request;
cmd.ExecuteNonQuery();
}
}
private void butCreate_Click(object sender, EventArgs e)
{
string s1 = "create table regions_list(region_ID int identity(1,1), region_name varchar(25), PRIMARY KEY (region_ID));";
string s2 = "drop table regions_list;";
create_table(s1,s2);
}
private void AddInf_Click(object sender, EventArgs e)
{
string s = "INSERT INTO regions_list VALUES('Автономна республіка Крим');" +
"INSERT INTO regions_list VALUES('Вінницька');" +
"INSERT INTO regions_list VALUES('Волинська');" +
...................
"INSERT INTO regions_list VALUES('Чернигівська');" ; SqlRequest(s);
}
private void butReadTable_Click(object sender, EventArgs e)
{
string s = "SELECT region_name FROM regions_list;";
ReadTable(s);
}
private void butCreate2_Click(object sender, EventArgs e)
{
string s1 = "CREATE TABLE city_list(city_id INT IDENTITY(1,1), region_ID INT, city_name VARCHAR(100),"+ "PRIMARY KEY(city_id), UNIQUE (city_name), FOREIGN KEY (region_ID) REFERENCES regions_list(region_ID));";
string s2 = "DROP TABLE city_list;";
create_table(s1, s2);
}
private void butAddInf2_Click_1(object sender, EventArgs e)
{
string s = "INSERT INTO city_list VALUES(12,'м. Луганськ'); INSERT INTO city_list VALUES(12,'м. Свердловськ');" +
" INSERT INTO city_list VALUES(12,'смт. Станично-Луганське');INSERT INTO city_list VALUES(10,'м. Київ');" +
............
" INSERT INTO city_list VALUES(12,'Перевальський р-н, пос. Чорнухіно');";
SqlRequest(s);
}
private void butReadTable2_Click_1(object sender, EventArgs e)
{
string s = "SELECT city_name FROM city_list;";
ReadTable(s);
}
private void butCreate3_Click_1(object sender, EventArgs e)
{
string s1 = "CREATE TABLE street_list(street_id INT IDENTITY(1,1), city_id INT, street_name VARCHAR(80),"+
"PRIMARY KEY(street_id), UNIQUE (city_id, street_name), FOREIGN KEY(city_id) REFERENCES city_list (city_id));";
string s2 = "DROP TABLE street_list;";
create_table(s1, s2);
}
private void butAddInf3_Click_1(object sender, EventArgs e)
{
string s = "INSERT INTO street_list VALUES(1,'16 лінія вул. '); INSERT INTO street_list VALUES(4,'Красноармейська вул.');" +
"INSERT INTO street_list VALUES(2,'Красноармейська вул. '); INSERT INTO street_list VALUES(3,'Чапаєва вул.');" +
.........
"INSERT INTO street_list VALUES(1,'Тімірязєва вул.');";
SqlRequest(s);
}
private void butReadTable3_Click_1(object sender, EventArgs e)
{
string s = "SELECT street_name FROM street_list;";
ReadTable(s);
}
Внешний вид формы:
Документ
Категория
Рефераты
Просмотров
18
Размер файла
945 Кб
Теги
лаб5вар11
1/--страниц
Пожаловаться на содержимое документа