МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П. О. СУХОГО
Факультет автоматизированных и информационных систем
Кафедра «Информационные технологии»
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 3
на тему: «Использование объектов ADO.NET для работы с базами данных»
Выполнил: студент гр. ИТ-32
Принял: доцент
Гомель 2015
Цель работы: Изучить назначение и свойства, получить навыки использования объектов и классов ADO.NET, предназначенных для работы с данными из реляционных источников.
ЗАДАНИЕ
Используя среду Microsoft Visual Studio и объекты ADO.NET (Connection, Command, DataAdapter, DataSet и другие) написать программу, которая будет выполнять следующие функции:
1. заполнение БД MS SQL Server, соответствующей предметной области вашего варианта, тестовыми данными. Таблицы на стороне отношения один должны содержать не менее 100 записей, таблице на стороне отношения многие должны содержать не менее 10000 записей.
При выполнении кода предусмотреть вывод диагностических и информационных сообщений, например, о начале выполнения процедуры (процедур) заполнения, окончании заполнения, сообщений об ошибках.
Программное заполнение рекомендуется осуществлять в следующем порядке: сначала генерируются и вносятся данные в таблицы на стороне отношения «один» (таблицы-справочники), затем, используя значения первичных ключей таблиц, стоящих не стороне отношения один, генерируются и вносятся данные в таблицы на стороне отношения «многие» (оперативные таблицы).
2. отображение данных, занесенных в таблицы на Windows-форме с использованием табличных элементов управления, например, dataGridView.
Ход работы и результаты
Для работы с данными на сервере , нужно подключится к нему. Для этого мы используем следующую запись : Data Source=WHITEHAT-PC;Initial Catalog=LabRab3;Integrated Security=True”.
После успешного подключения к серверу нужно создать и заполнить базу данными. Для этого в программе считывается файл “db.txt” , содержащий следующие записи :
Файл“db.txt” :
USE LabRab3
DROP TABLE [Должности]
DROP TABLE [Факультет]
DROP TABLE [Кафедры]
DROP TABLE [Дисциплины]
DROP TABLE [Сотрудники]
DROP TABLE [Дата_рождения]
DROP TABLE [Преподаватели]
DROP TABLE [Закрепление_дисциплин]
DROP TABLE [Специальности]
DROP TABLE [Учебная_нагрузка]
CREATE TABLE [Должности]
(
[КодДолжности] int IDENTITY(1,1) NOT NULL PRIMARY KEY ,
[Наименование] varchar(50) NULL
)
CREATE TABLE [Факультет]
(
[КодФакультета] int IDENTITY(1,1) NOT NULL PRIMARY KEY ,
[Наименование] varchar(50) NULL
)
CREATE TABLE [Кафедры]
(
[КодКафедры] int IDENTITY(1,1) NOT NULL PRIMARY KEY ,
[КодФакультета] integer NOT NULL ,
[ТипКафедры] varchar(50) NULL ,
[НаименованиеКафедры] varchar(50) NULL
)
CREATE TABLE [Дисциплины]
(
[КодДисциплины] int IDENTITY(1,1) NOT NULL PRIMARY KEY ,
[Наименование] varchar(50) NULL ,
[Курс] integer NULL ,
[Семестр] integer NULL
)
CREATE TABLE [Сотрудники]
(
[КодСотрудника] int IDENTITY(1,1) NOT NULL PRIMARY KEY ,
[ФИО] varchar(50) NULL ,
[КодДолжности] integer NOT NULL ,
[КодДисциплины] integer NULL
)
CREATE TABLE [Дата_рождения]
(
[КодДатыРождения] int IDENTITY(1,1) NOT NULL PRIMARY KEY,
[КодСотрудника] integer NOT NULL ,
[ГодРождения] date NOT NULL
)
CREATE TABLE [Преподаватели]
(
[КодПреподавателя] int IDENTITY(1,1) NOT NULL PRIMARY KEY ,
[ФИО] varchar(50) NULL ,
[КодДисциплины] integer NOT NULL ,
[Наименование] varchar(50) NULL ,
[КодКафедры] integer NOT NULL
)
CREATE TABLE [Закрепление_дисциплин]
(
[КодЗакрепления] int IDENTITY(1,1) NOT NULL PRIMARY KEY ,
[КодПреподавателя] integer NOT NULL ,
[КодДисциплины] integer NOT NULL ,
[Семестр] integer NOT NULL ,
[Год] date NOT NULL
)
CREATE TABLE [Специальности]
(
[КодСпециальности] int IDENTITY(1,1) NOT NULL PRIMARY KEY ,
[КодКафедры] integer NOT NULL ,
[Наименование] varchar(50) NULL ,
[Дисциплины] varchar(50) NULL ,
[КодДисциплины] integer NOT NULL
)
CREATE TABLE [Учебная_нагрузка]
(
[КодНагрузки] int IDENTITY(1,1) NOT NULL PRIMARY KEY ,
[КодСпециальности] integer NOT NULL ,
[КодДисциплины] integer NOT NULL ,
[КоличествоЛекции] integer NULL ,
[КоличествоПрактик] integer NULL ,
[КоличествоЛабораторных] integer NULL ,
[Семестр] integer NOT NULL ,
[Год] date NOT NULL ,
[КодКафедры] integer NOT NULL
)
SET NOCOUNT ON
DECLARE @Symbol CHAR(52)= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
@Position INT,
@i INT,
@LengthStr INT,
@str1 nvarchar(50),
@str2 nvarchar(50),
@str3 nvarchar(50),
@Number int ,
@RowCount INT,
@NameLimit INT
BEGIN TRAN
SET @Number =1000
SELECT @i=0 From dbo.Факультет WITH (TABLOCKX) WHERE 1=0
SET @RowCount = 1
while @RowCount<=@Number
begin
set @str1 =''
set @NameLimit = 5+RAND()*45
set @i=1
while @i<@NameLimit
begin
set @Position=RAND()*52
set @str1 = @str1 + SUBSTRING(@Symbol, @Position, 1)
set @i=@i+1
end
insert into dbo.Факультет(Наименование)
select @str1
set @RowCount +=1
end
select @i=0 from dbo.Должности with (tablockx) where 1=0
set @RowCount = 1
while @RowCount<=@Number
begin
set @str1 =''
set @NameLimit = 5+RAND()*45
set @i=1
while @i<@NameLimit
begin
set @Position=RAND()*52
set @str1 = @str1 + SUBSTRING(@Symbol, @Position, 1)
set @i=@i+1
end
insert into dbo.Должности(Наименование)
select @str1
set @RowCount +=1
end
select @i=0 from dbo.Дата_рождения with (tablockx) where 1=0
set @RowCount = 1
while @RowCount<@Number
begin
set @str1 = ''
set @NameLimit = 5+RAND()*45
set @i=1
while @i<@NameLimit
begin
set @Position=RAND()*52
set @str1 = @str1 + SUBSTRING(@Symbol, @Position, 1)
set @i=@i+1
end
insert into dbo.Дисциплины(Наименование,Курс,Семестр)
values (@str1,((RAND()*4)+1),(RAND()*9)+1)
set @RowCount +=1
end
select @i=0 from dbo.Дата_рождения with (tablockx) where 1=0
set @RowCount = 1
while @RowCount<@Number
begin
set @str1 = ''
set @NameLimit = 5+RAND()*45
set @i=1
while @i<@NameLimit
begin
set @Position=RAND()*52
set @str1 = @str1 + SUBSTRING(@Symbol, @Position, 1)
set @i=@i+1
end
insert into dbo.Сотрудники(КодДолжности,КодДисциплины,ФИО)
values(CAST( (1+RAND()*99) as int),CAST( (1+RAND()*99) as int),@str1)
set @RowCount +=1
end
select @i=0 from dbo.Кафедры with (tablockx) where 1=0
set @RowCount = 1
while @RowCount<@Number
begin
set @str1 = ''
set @NameLimit = 5+RAND()*45
set @i=1
while @i<@NameLimit
begin
set @Position=RAND()*52
set @str1 = @str1 + SUBSTRING(@Symbol, @Position, 1)
set @i=@i+1
end
set @str2 = ''
set @NameLimit = 5+RAND()*45
set @i=1
while @i<@NameLimit
begin
set @Position=RAND()*52
set @str2 = @str2 + SUBSTRING(@Symbol, @Position, 1)
set @i=@i+1;
end
insert into dbo.Кафедры (КодФакультета,ТипКафедры,НаименованиеКафедры)
select CAST( (1+RAND()*99) as int),@str1,@str2
set @RowCount +=1
end
select @i=0 from dbo.Дата_рождения with (tablockx) where 1=0
set @RowCount = 1
while @RowCount<=@Number
begin
set @str1 =''
set @NameLimit = 5+RAND()*45
set @i=1
while @i<@NameLimit
begin
set @Position=RAND()*52
set @str1 = @str1+ SUBSTRING(@Symbol, @Position, 1)
set @i=@i+1;
end
insert into dbo.Дата_рождения(КодСотрудника,ГодРождения)
select CAST( (1+RAND()*999)as int),dateadd(day,-RAND()*1500,GETDATE())
set @RowCount +=1
end
select @i=0 from dbo.Преподаватели with (tablockx) where 1=0
set @RowCount = 1
while @RowCount<=@Number
begin
set @str1 = ''
set @NameLimit = 5+RAND()*45
set @i=1
while @i<@NameLimit
begin
set @Position=RAND()*52
set @str1 = @str1 + SUBSTRING(@Symbol, @Position, 1)
set @i=@i+1;
end
set @str2 =''
set @NameLimit = 5+RAND()*45
set @i=1
while @i<@NameLimit
begin
set @Position=RAND()*52
set @str2 = @str2+ SUBSTRING(@Symbol, @Position, 1)
set @i=@i+1;
end
insert into dbo.Преподаватели(КодДисциплины,КодКафедры,ФИО,Наименование)
values (CAST( (1+RAND()*99)as int),CAST( (1+RAND()*999)as int),@str1,@str2)
set @RowCount +=1
end
select @i=0 from dbo.Специальности with (tablockx) where 1=0
set @RowCount = 1
while @RowCount<=@Number
begin
set @str1 = ''
set @NameLimit = 5+RAND()*45
set @i=1
while @i<@NameLimit
begin
set @Position=RAND()*52
set @str1 = @str1+ SUBSTRING(@Symbol, @Position, 1)
set @i=@i+1;
end
set @str2 = ''
set @NameLimit = 5+RAND()*45
set @i=1
while @i<@NameLimit
begin
set @Position=RAND()*52
set @str2 = @str2+ SUBSTRING(@Symbol, @Position, 1)
set @i=@i+1;
end
insert into dbo.Специальности(КодДисциплины,КодКафедры,Наименование,Дисциплины)
values (CAST( (1+RAND()*99)as int),CAST( (1+RAND()*99)as int),@str1,@str2)
set @RowCount +=1
end
select @i=0 from dbo.Закрепление_дисциплин with (tablockx) where 1=0
set @RowCount = 1
while @RowCount<=@Number
begin
insert into dbo.Закрепление_дисциплин(КодДисциплины,КодПреподавателя,Год,Семестр)
values (CAST( (1+RAND()*99)as int),CAST( (1+RAND()*99)as int),dateadd(day,-RAND()*1500,GETDATE()),((RAND()*9)+1))
set @RowCount +=1
end
select @i=0 from dbo.Учебная_нагрузка with (tablockx) where 1=0
set @RowCount = 1
while @RowCount<=@Number
begin
insert into dbo.Учебная_нагрузка(КодКафедры,КодДисциплины,КодСпециальности,КоличествоЛабораторных,КоличествоЛекции,КоличествоПрактик,Семестр,Год)
values (CAST( (1+RAND()*99)as int),CAST( (1+RAND()*99)as int),CAST( (1+RAND
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.