Лабораторная работа 1 создание баз данных (БД) в microsoft sql server
Скачать 1.1 Mb.
|
Лабораторная работа №4 СОЗДАНИЕ ХРАНИМЫХ ПРОЦЕДУР В MICROSOFT SQL SERVER Цель работы –научиться создавать и использовать хранимые процедурына сервере БД. Содержание работы: 1. Проработка всех примеров, анализ результатов их выполнения в утилите SQL Server Management Studio. Проверка наличия созданных про-цедур в текущей БД. 37 Выполнение всех примеров и заданий по ходу лабораторной работы. Выполнение индивидуальных заданий по вариантам. Пояснения к выполнению работы Для освоения программирования хранимых процедур используем при-мер базы данных c названием DB_Books, которая была создана в лабора-торной работе №1. При выполнении примеров и заданий обращайте вни-мание на соответствие названий БД, таблиц и других объектов проекта. Хранимые процедуры представляют собой набор команд,состоящийиз одного или нескольких операторов SQL или функций и сохраняемый в базе данных в откомпилированном виде. Типы хранимых процедур [1] Системные хранимые процедуры предназначены для выполнения раз-личных административных действий. Практически все действия по адми-нистрированию сервера выполняются с их помощью. Можно сказать, что системные хранимые процедуры являются интерфейсом, обеспечивающим работу с системными таблицами. Системные хранимые процедуры имеют префикс sp_, хранятся в системной базе данных и могут быть вызваны в контексте любой другой базы данных. Пользовательские хранимые процедуры реализуют те или иные дейст-вия. Хранимые процедуры – полноценный объект базы данных. Вследствие этого каждая хранимая процедура располагается в конкретной базе дан-ных, где и выполняется. Временные хранимые процедуры существуют лишь некоторое время, после чего автоматически уничтожаются сервером. Они делятся на ло-кальные и глобальные. Локальные временные хранимые процедуры могут быть вызваны только из того соединения, в котором созданы. При созда-нии такой процедуры ей необходимо дать имя,начинающееся с одногосимвола #. Как и все временные объекты, хранимые процедуры этого типа автоматически удаляются при отключении пользователя, перезапуске или остановке сервера. Глобальные временные хранимые процедуры доступны для любых соединений сервера, на котором имеется такая же процедура. Для ее определения достаточно дать ей имя, начинающееся с символов ##. Удаляются эти процедуры при перезапуске или остановке сервера, а также при закрытии соединения, в контексте которого они были созданы. Создание, изменение хранимых процедур [1] Создание хранимой процедуры предполагает решение следующих за-дач: планирование прав доступа. При создании хранимой процедуры сле- 38 дует учитывать, что она будет иметь те же права доступа к объектам базы данных, что и создавший ее пользователь; определение параметров храни-мой процедуры, хранимые процедуры могут обладать входными и выход-ными параметрами; разработка кода хранимой процедуры. Код процедуры может содержать последовательность любых команд SQL, включая вызов других хранимых процедур. Синтаксис оператора создания новой или изменения имеющейся хра-нимой процедуры в обозначениях MS SQL Server: {CREATE | ALTER } PROC[EDURE] имя_процедуры [;номер] [{@имя_параметра тип_данных } [VARYING ] [=default][OUTPUT] ][,...n] [WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION }] [FOR REPLICATION] AS sql_оператор [...n] Рассмотрим параметры данной команды. Используя префиксы sp_, #, ##, создаваемую процедуру можно опреде-лить в качестве системной или временной. Как видно из синтаксиса ко-манды, не допускается указывать имя владельца, которому будет принад-лежать создаваемая процедура, а также имя базы данных, где она должна быть размещена. Таким образом, чтобы разместить создаваемую хранимую процедуру в конкретной базе данных, необходимо выполнить команду CREATE PROCEDURE в контексте этой базы данных. При обращении из тела хранимой процедуры к объектам той же базы данных можно исполь-зовать укороченные имена, т. е. без указания имени базы данных. Когда же требуется обратиться к объектам, расположенным в других базах данных, указание имени базы данных обязательно. Для передачи входных и выходных данных в создаваемой хранимой процедуре имена параметров должны начинаться с символа @. В одной хранимой процедуре можно задать множество параметров, разделенных запятыми. В теле процедуры не должны применяться локальные перемен-ные, чьи имена совпадают с именами параметров этой процедуры. Для определения типа данных параметров хранимой процедуры под-ходят любые типы данных SQL, включая определенные пользователем. Однако тип данных CURSOR может быть использован только как выход-ной параметр хранимой процедуры, т.е. с указанием ключевого слова OUTPUT. Наличие ключевого слова OUTPUT означает, что соответствующий параметр предназначен для возвращения данных из хранимой процедуры. Однако это вовсе не означает, что параметр не подходит для передачи зна-чений в хранимую процедуру. Указание ключевого слова OUTPUT пред-писывает серверу при выходе из хранимой процедуры присвоить текущее 39 значение параметра локальной переменной, которая была указана при вы-зове процедуры в качестве значения параметра. Отметим, что при указании ключевого слова OUTPUT значение соответствующего параметра при вы-зове процедуры может быть задано только с помощью локальной перемен-ной. Не разрешается использование любых выражений или констант, до-пустимое для обычных параметров. Ключевое слово VARYING применяется совместно с параметром OUTPUT, имеющим тип CURSOR. Оно определяет, что выходным пара-метром будет результирующее множество. Ключевое слово DEFAULT представляет собой значение, которое бу-дет принимать соответствующий параметр по умолчанию. Таким образом, при вызове процедуры можно не указывать явно значение соответствую-щего параметра. Так как сервер кэширует план исполнения запроса и компилированный код, при последующем вызове процедуры будут использоваться уже гото-вые значения. Однако в некоторых случаях все же требуется выполнять перекомпиляцию кода процедуры. Указание ключевого слова RECOMPILE предписывает системе создавать план выполнения хранимой процедуры при каждом ее вызове. Параметр FOR REPLICATION востребован при репликации данных и включении создаваемой хранимой процедуры в качестве статьи в публика-цию. Ключевое слово ENCRYPTION предписывает серверу выполнить шифрование кода хранимой процедуры, что может обеспечить защиту от использования авторских алгоритмов, реализующих работу хранимой про-цедуры. Ключевое слово AS размещается в начале собственно тела хранимой процедуры. В теле процедуры могут применяться практически все коман-ды SQL, объявляться транзакции, устанавливаться блокировки и вызы-ваться другие хранимые процедуры. Выход из хранимой процедуры можно осуществить посредством команды RETURN. Удаление хранимой процедуры DROP PROCEDURE {имя_процедуры} [,...n] Выполнение хранимой процедуры [1] Для выполнения хранимой процедуры используется команда: [[ EXEC [ UTE] имя_процедуры [;номер] [[@имя_параметра=]{значение | @имя_переменной} [OUTPUT ]|[DEFAULT ]][,...n] Если вызов хранимой процедуры не является единственной командой в пакете, то присутствие команды EXECUTE обязательно. Более того, эта 40 команда требуется для вызова процедуры из тела другой процедуры или триггера. Использование ключевого слова OUTPUT при вызове процедуры раз-решается только для параметров, которые были объявлены при создании процедуры с ключевым словом OUTPUT. Когда же при вызове процедуры для параметра указывается ключевое слово DEFAULT, то будет использовано значение по умолчанию. Естест-венно, указанное слово DEFAULT разрешается только для тех параметров, для которых определено значение по умолчанию. Из синтаксиса команды EXECUTE видно, что имена параметров могут быть опущены при вызове процедуры. Однако в этом случае пользователь должен указывать значения для параметров в том же порядке, в каком они перечислялись при создании процедуры. Присвоить параметру значение по умолчанию, просто пропустив его при перечислении, нельзя. Если же тре-буется опустить параметры, для которых определено значение по умолча-нию, достаточно явного указания имен параметров при вызове хранимой процедуры. Более того, таким способом можно перечислять параметры и их значения в произвольном порядке. Отметим, что при вызове процедуры указываются либо имена пара-метров со значениями, либо только значения без имени параметра. Их комбинирование не допускается. Использование RETURN в хранимой процедуре Позволяет выйти из процедуры в любой точке по указанному условию, а также позволяет передать результат выполнения процедуры числом, по которому можно судить о качестве и правильности выполнения процеду-ры. 41 Пример создания процедуры без параметров: CREATE PROCEDURE Count_Books AS Select count(Code_book) from Books Go Задание 1.Создайте данную процедуру в разделеStored Proceduresба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команды EXEC Count_Books Проверьте результат. Пример создания процедуры c входным параметром: CREATE PROCEDURE Count_Books_Pages @Count_pages as Int AS Select count(Code_book) from Books WHERE Pages>=@Count_pages Go Задание 2.Создайте данную процедуру в разделеStored Proceduresба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команды EXEC Count_Books_Pages 100 Проверьте результат. Пример создания процедуры c входными параметрами: CREATE PROCEDURE Count_Books_Title @Count_pages as Int, @Title AS Char(10) AS Select count(Code_book) from Books WHERE Pages>=@Count_pages AND Title_book LIKE @Title Go Задание 3.Создайте данную процедуру в разделеStored Proceduresба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команды EXEC Count_Books_Title 100, 'П%' Проверьте результат. Пример создания процедуры c входными параметрами и выходным параметром: CREATE PROCEDURE Count_Books_Itogo @Count_pages Int, @Title Char(10) , @Itogo Int OUTPUT AS 42 Select @Itogo = count(Code_book) from Books WHERE Pages>=@Count_pages AND Title_book LIKE @Title Go Задание 4.Создайте данную процедуру в разделеStored Proceduresба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите с помощью набора команд: Declare @q As int EXEC Count_Books_Itogo 100, 'П%', @q output select @q Проверьте результат. Пример создания процедуры c входными параметрами и RETURN: CREATE PROCEDURE checkname @param int AS IF (SELECT Name_author FROM authors WHERE Code_author = @param) = 'Пушкин А.С.' RETURN 1 ELSE RETURN 2 Задание 5.Создайте данную процедуру в разделеStored Proceduresба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команд: DECLARE @return_status int EXEC @return_status = checkname 1 SELECT 'Return Status' = @return_status Пример создания процедуры без параметров для увеличения значения ключевого поля в таблице Purchases в 2 раза: CREATE PROC update_proc AS UPDATE Purchases SET Code_purchase = Code_purchase*2 Процедура не возвращает никаких данных. Задание 6.Создайте данную процедуру в разделеStored Proceduresба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команды EXEC update_proc 43 Пример процедуры с входным параметром для получения всей ин-формации о конкретном авторе: CREATE PROC select_author @k CHAR(30) AS SELECT * FROM Authors WHERE name_author=@k Задание 7.Создайте данную процедуру в разделеStored Proceduresба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команд: EXEC select_author 'Пушкин А.С.' или select_author @k='Пушкин А.С.' или EXEC select_author @k='Пушкин А.С.' Пример создания процедуры с входным параметром и значением по умолчанию для увеличения значения ключевого поля в таблице Pur-chases в заданное количество раза (по умолчанию в 2 раза): CREATE PROC update_proc @p INT = 2 AS UPDATE Purchases SET Code_purchase = Code_purchase *@p Процедура не возвращает никаких данных. Задание 8.Создайте данную процедуру в разделеStored Proceduresба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команд: EXEC update_proc 4 или EXEC update_proc @p = 4 или EXEC update_proc --будет использовано значение по умолчанию. Пример создания процедуры с входным и выходным параметрами. Создать процедуру для определения количества заказов, совершенных за указанный период: CREATE PROC count_purchases @d1 SMALLDATETIME, @d2 SMALLDATETIME, @c INT OUTPUT AS SELECT @c=count(Code_purchase) from Purchases WHERE Date_order BETWEEN @d1 AND @d2 SET @c = ISNULL(@c,0) Задание9.Создайте данную процедуру в разделеStored Proceduresба- зы данных DB_Books через утилиту SQL server Management Studio. Запус- тите ее с помощью команд: 44 DECLARE @c2 INT EXEC count_purchases ’01-jun-2006’, ’01-jul-2006’, @c2 OUTPUT SELECT @c2 Варианты заданий к лабораторной работе №4 Общие положения В утилите SQL Server Management Studio создать новую страницу для кода (кнопка «Создать запрос»). Программно сделать активной созданную БД DB_Books с помощью оператора Use. Создать хранимые процедуры c помощью операторов Create procedure, причем самостоятельно опреде-лить имена процедур. Каждая процедура будет выполнять по одному SQL запросу, которые были выполнены во второй лабораторной работе. При-чем код SQL запросов нужно изменить таким образом, чтобы в них можно было передавать значения полей, по которым осуществляется поиск. Например, исходное задание и запрос в лабораторной работе №2: /*Выбрать из справочника поставщиков (таблица Deliveries) названия ком-паний, телефоны и ИНН (поля Name_company, Phone и INN), у которых название компании (поле Name_company) 'ОАО МИР'. SELECT Name_company, Phone, INN FROM Deliveries WHERE Name_company = 'ОАО МИР' */ --В данной работе будет создана процедура: CREATE PROC select_name_company @comp CHAR(30) AS SELECT Name_company, Phone, INN FROM Deliveries WHERE Name_company = @comp --Для запуска процедуры используется команда: EXEC select_name_company 'ОАО МИР' Сохранить файл программы с названием ФамилияСтудента_ЛАб_4. В SQL Server Management Studio в разделе хранимых процедур БД DB_Books проверить наличие процедур. Список заданий В утилите SQL Server Management Studio создать новую программу. Программно сделать активной индивидуальную БД, созданную в лабора-торной работе №1, с помощью оператора Use. Создать хранимые процеду-ры c помощью операторов Create procedure, причем самостоятельно оп-ределить имена процедур. Каждая процедура будет выполнять по одному 45 SQL запросу, которые представлены в виде отдельных заданий по вариан-там. Сохранить файл программы с названием Фамилия Студен- та_Лаб_4_№варианта. В SQL Server Management Studio в разделе храни- мых процедур индивидуальной БД проверить наличие процедур. Вариант 1 Вывести список сотрудников, у которых есть хотя бы один ребенок. Вывести список детей, которым выдали подарки в указанный пери-од. Вывести список родителей, у которых есть несовершеннолетние де-ти. Вывести информацию о подарках со стоимостью больше указанного числа, отсортированных по дате. Вариант 2 Вывести список приборов с указанным типом. Вывести количество отремонтированных приборов и общую стои-мость ремонтов у указанного мастера. Вывести список владельцев приборов и количество их обращений, отсортированный по количеству обращений по убыванию. Вывести информацию о мастерах с разрядом больше указанного числа или с датой приема на работу меньше указанной даты. Вариант 3 Вывести список цветков с указанным типом листа. Вывести список кодов продаж, по которым продано цветов на сумму больше указанного числа. Вывести дату продажи, сумму, продавца и цветок по указанному ко-ду продажи. Вывести список цветов и сорт для цветов с высотой больше указан-ного числа или цветущий. Вариант 4 Вывести список лекарств с указанным показанием к применению. Вывести список дат поставок, по которым продано больше указанно-го числа одноименного лекарства. Вывести дату поставки, сумму, ФИО руководителя от поставщика и название лекарства по коду поступления больше указанного числа. Вывести список лекарств и единицы измерения для лекарств с коли-чеством в упаковке больше указанного числа или кодом лекарства меньше определенного значения. Вариант 5 Вывести список сотрудников с указанной должностью. Вывести список списанного оборудования по указанной причине. 46 Вывести дату поступления, название оборудования, ФИО ответст-венного и дату списания для оборудования, списанного в указанный период. Вывести список оборудования с указанным типом или с датой по-ступления больше определенного значения. Вариант 6 Вывести список блюд с весом больше указанного числа. Вывести список продуктов, в названии которых встречается указан-ный фрагмент слова. Вывести объем продукта, название блюда, название продукта с ко-дом блюда от указанного начального значения по определенному конечному значению. Вывести порядок приготовления блюда и название блюда с количе-ством углеводов больше определенного значения или количеством калорий больше указанного значения. Вариант 7 Вывести список сотрудников с указанной должностью. Вывести список документов, в содержании которых встречается ука-занный фрагмент слова. Вывести дату регистрации, тип документа, ФИО регистратора и на-звание организации для документов, зарегистрированных в указан-ный период. Вывести список зарегистрированных документов с определенным типом документа или с датой регистрации больше указанного значе-ния. Вариант 8 Вывести список сотрудников с указанной причиной увольнения. Вывести список документов с датой регистрации в указанный пери-од. Вывести дату регистрации, причину увольнения, ФИО сотрудника для документов, зарегистрированных в указанный период. Вывести список зарегистрированных документов с кодом документа в указанном диапазоне. Вариант 9 Вывести список сотрудников, бравших отпуск указанного типа. Вывести список документов с датой регистрации в указанный пери-од. Вывести дату регистрации, тип отпуска, ФИО сотрудника для доку-ментов, зарегистрированных в указанный период. Вывести список зарегистрированных документов с кодом документа в указанном диапазоне. 47 Вариант 10 Вывести список сотрудников с указанной должностью. Вывести список документов, в содержании которых встречается ука-занный фрагмент слова. Вывести дату регистрации, тип документа, ФИО отправителя и на-звание организации для документов, зарегистрированных в указан-ный период. Вывести список зарегистрированных документов с указанным типом документа или с кодом документа меньше определенного значения. Вариант 11 Вывести список сотрудников, назначенных на указанную должность. Вывести список документов с датой регистрации в указанный пери-од. Вывести дату регистрации, должность, ФИО сотрудника для доку-ментов, зарегистрированных в указанный период. Вывести список зарегистрированных документов с кодом документа в указанном диапазоне. Вариант 12 Вывести список оборудования с указанным типом. Вывести список оборудования, которое брал в прокат определенный клиент. Вывести список лиц, бравших оборудование в прокат и количество их обращений, отсортированный по количеству обращений по убы-ванию. Вывести информацию о клиентах, отсортированных по адресам. Вариант 13 Вывести список оборудования с указанным типом. Вывести список оборудования, которое списал определенный со-трудник. Вывести количество списанного оборудования, сгруппированного по типам оборудования. Вывести информацию о сотрудниках с датой приема на работу больше определенной даты. Вариант 14 Вывести список цветков с указанным типом листа. Вывести список кодов поступлений, по которым продано цветов на суммы больше определенного значения. Вывести дату поступления, сумму, названия поставщика и цветов по определенному коду поставщика. Вывести список цветов и сорт для цветов с высотой больше опреде-ленного числа или цветущий. Вариант 15 48 Вывести список клиентов, заехавших в номера в указанный период. Вывести общую сумму оплат за номера для каждого клиента. Вывести дату заезда, тип номера, ФИО клиентов, зарегистрирован-ных в указанный период. Вывести список зарегистрированных клиентов в номерах определен-ного типа. Вариант 16 Вывести список оборудования с указанным типом. Вывести список оборудования, которое брал в прокат определенный клиент. Вывести список лиц, бравших оборудование в прокат и количество их обращений, отсортированных по количеству обращений по убы-ванию. Вывести информацию о клиентах, отсортированных по адресам. Вариант 17 Вывести список ценностей с закупочной стоимостью больше опре-деленного значения или сроком гарантии больше указанного числа. Вывести список мест нахождения материальных ценностей, в назва-нии которых встречается указанное слово. Вывести сумму стоимости ценностей с кодом в указанном диапазо-не. Вывести список материально ответственных лиц с датой приема на работу в указанном диапазоне. Вариант 18 Вывести список ремонтных работ, выполненных определенным мас-тером. Вывести список этапов работ, входящих в работы, в названии кото-рых встречается указанное слово. Вывести сумму стоимости этапов ремонтных работ для работ с ко-дом в указанном диапазоне. Вывести список мастеров с датой приема на работу в указанном диа-пазоне. Вариант 19 Вывести список лекарств с определенным показанием. Вывести список номеров чеков, по которым продано больше опреде-ленного числа лекарств. Вывести дату продажи, сумму, ФИО кассира и лекарство по чеку с указанным номером. Вывести список лекарств и единицы измерения для лекарств с коли-чеством в упаковке больше указанного числа или кодом лекарства меньше определенного значения. Вариант 20 49 Вывести список сотрудников с указанной должностью. Вывести список документов, в содержании которых встречается ука-занный фрагмент слова. Вывести дату регистрации, тип документа, ФИО исполнителя и факт исполнения для документов, зарегистрированных в указанный пери-од. Вывести список зарегистрированных документов с указанным типом документа или с кодом документа в определенном диапазоне. Лабораторная работа №5 СОЗДАНИЕ КЛИЕНТСКОЙ ЧАСТИ ПРИЛОЖЕНИЯ ДЛЯ ПРОСМОТРА, РЕДАКТИРОВАНИЯ ДАННЫХ БД. ВЫЗОВ ХРАНИМЫХ ПРОЦЕДУР ИЗ КЛИЕНТСКОЙ ЧАСТИ Лабоработные работы перевел со среды Delphi на С# студент группы ИВТ-447 ОмГТУ Крындач Егор Юрьевич, большое ему за это спасибо! Цель работы –научиться создавать клиентское приложение для работы сбазой данных с применением встроенных инструментов на Visual C# 2005. Содержание работы: Выполнение всех заданий по ходу лабораторной работы. Выполнение индивидуальных заданий. Пояснения к выполнению работы Для создания клиентского приложения на Visual C# 2005 используем пример базы данных c названием DB_Books, которая была создана в лабо-раторной работе №1. При выполнении примеров и заданий обращайте внимание на соответствие названий БД, таблиц и других объектов проекта. На Visual C# 2005: В проекте выбираем меню Tools => Connect to DataBase. В открывшемся окне в поле Data Source ставим Microsoft SQL Server, в поле Server Name – SQLEXPRESS, далее в поле Select or enter DB name выбирете имя БД, к которой будем подключаться, и нажмите OK. Теперь открыв окно Server explorer можно увидеть подключенную БД. Нажав на нее, в окне свойств копируем Connection String, она еще при-годится. На форму добавить 5 компонентов типа DataGridView (переимено- вать компоненты на Purchases, Books, Authors, Deliveries, Publish). Во вкладке Data выберем Add New Data Source. В появившемся ок-не выберем DataBase и нажмем Next. Выбераем нашу БД, жмем Next. В 50 появившемся окне поставим галочку на пункте Table (выбераем все соз-данные таблици). Жмем Finish. 6. У каждой таблици DataGridView изменим свойство DataSource на соответствующие названию этой таблици: На основной форме (Form1) добавить компонент. В редакторе ме-ню сделать первый пункт «Работа с таблицами» и в подменю пункты: «Ав-торы», «Книги», «Издательства», «Поставщики», «Поставки». Создать пять форм, каждую из которых назвать: FormAuthors, FormPurchases, FormBooks, FormDeliveries, FormPublish. 9. На основной форме в подпунктах меню в соответствующих мето-дах Click вызвать соответствующие формы с помощью кода: для FormAuthors: FormAuthors myForm2 = new FormAuthors(); myForm2.Show(); для FormPurchases: FormPurchases myForm3 = new FormPurchases(); myForm3.Show(); для FormBooks: FormBooks myForm4 = new FormBooks(); myForm4.Show(); для FormDeliveries: FormDeliveries myForm5 = new FormDeliveries(); myForm5.Show(); для FormPublish: FormPublish myForm6 = new FormPublish(); myForm6.Show(); 51 10. На формы FormAuthors, FormPurchases, FormBooks, FormDeliveries, FormPublish добавить по паре компонент типа DataGridView и Binding-Navigator. Настроить у DataGridView свойство DataSource для связи с со- ответствующим источником данных. Затем необходимо настроить у Bind-ingNavigator свойство BindingSource для связи с созданной табли-цей(значение должно совпадать со значением свойства элемента DataGrid- View). Проверить работу приложения. На форму FormBooks добавить 3 компонента типа TextBox и 2 компонента ComboBox. 1-го компонента TextBox изменить свойства: (DataBinding) Text booksBindingSource - Code_book У 2-го компонента TextBox изменить свойства: (DataBinding) Text booksBindingSource - Title_book У 1-го компонента ComboBox изменить свойства: (DataBinding) SelectedValue booksBindingSource – Code_author DataSource authorsBindingSource DisplayMember name_author ValueMember Code_author У 3-го компонента TextBox изменить свойства: (DataBinding) Text booksBindingSource - Pages У 2-го компонента ComboBox изменить свойства: (DataBinding) SelectedValue booksBindingSource – Code_publish DataSource publishinghouseBindingSource DisplayMember Publish ValueMember Code_publish У компонента DataGridView убрать все галочки со свойств редак-тирования и добавления. На форму FormBooks добавить компонент типа Button (кнопка об-новления данных), свойство Text изменить на «Обновить» и прописать со- бытие Click: this.Validate(); this.booksBindingSource.EndEdit(); this.booksTableAdapter.Update(this.dB_BOOKSDataSet.Books); Аналогично для остальных форм добавить элементы типа TextBox Проверить работу приложения. На форму FormBooks добавить 5 компонентов типа Button. 52 У 1-го компонента Button изменить свойства и метод: Text Фильтр по текущему издательству; В методе Click кнопки написать код: int bb = dataGridView1.CurrentCell.RowIndex; booksBindingSource.Filter = "Code_Publish = " + dataGridView1[4,bb].Value;. У 2-го компонента Button изменить свойства и метод: Text Фильтр по текущему названию книги. В методе Click кнопки написать код: int bb = dataGridView1.CurrentCell.RowIndex; booksBindingSource.Filter = "Title_book = " + dataGridView1[1, bb].Value;. У 3-го компонента Button изменить свойства и метод: Text Фильтр по текущему автору. В методе Click кнопки написать код: int bb = dataGridView1.CurrentCell.RowIndex; booksBindingSource.Filter = "Code_Author = " + dataGridView1[0, bb].Value;. У 4-го компонента Button изменить свойства и метод: Text Фильтр по количеству книг. В методе Click кнопки написать код: int bb = dataGridView1.CurrentCell.RowIndex; booksBindingSource.Filter = "Pages = " + dataGridView1[3, bb].Value;. У 5-го компонента Button изменить свойства и метод: Text Снять фильтр. В методе Click кнопки написать код: booksBindingSource.Filter = "";. Аналогично для остальных форм добавить элементы типа Button, которые будут запускать фильтры по соответствующим значениям полей текущей записи в объекте Grid. Проверить работу приложения. Создать форму, назвать FormProcedure. 53 Рис. 5.1. Пример расположения компонентов на форме FormBooks Добавить на главной форме в меню пункт с названием Работа с процедурами. В методе Click пункта меню написать код для запуска фор-мы FormProcedure (см. пример кода в пункте 9 текущей лабораторной ра-боты). Зайти Tool -> Choose Toolbox Items. Поставить галочки на элемен- тах SqlCommand и SqlConnection, применить изменения. Добавить на форму компонент SqlConnection и в свойстве Connec- tionString выбрать DB_DOOK.mdf 24. Теперь можно подключить хранимую процедуру Count_purchases, выполненную в задании 9 лабораторной работы №4. На форму FormPro-cedure добавить компонент SqlCommand. Изменить следующие его свой-ства: Connection на SqlConnection1; CommandType на StoredProcedure; CommantText на Count_purchases. 25. У компонента SqlCommand1 выбрать свойтсво Parameters и в свойствах каждого входного параметра исправить свойство SqlDbType – на DateTime, а для выходного параметра свойство Value – Int. Также, если параметр со значением ReturnValue (параметр Direction) не создан, то необходимо соз-дать его (он должен быть на самом верху) и задать ему имя @ReturnValue со свойством SqlDbType - Int. 26. На форму FormProcedure добавить 3 компонента типа TextBox (имена соответственно TextBox1, TextBox2, TextBox3) и 1 компонент типа Button. Рядом с каждым компонентом TextBox поставить Label и испра-вить их свойства Text соответственно на «Количество покупок за указан-ный период», «Введите дату начала периода», «Введите дату конца перио-да». 54 27. На кнопке поменять название на «Выполнить запрос». В методе Click кнопки написать следующий код: int count_save; sqlCommand1.Parameters["@d1"].Value = Convert.ToDateTime(textBox1.Text); sqlCommand1.Parameters["@d2"].Value = Convert.ToDateTime(textBox2.Text); sqlConnection1.Open(); sqlCommand1.ExecuteNonQuery(); sqlConnection1.Close(); count_save = (int)sqlCommand1.Parameters["@ReturnValue"].Value; textBox3.Text = Convert.ToString(count_save); 28. Проверить работу приложения. Задания к лабораторной работе №5 На Visual C# 2005 создать новый проект, далее для индивидуальной БД, созданной в лабораторной работе №1, создать интерфейс, включаю-щий все функции и процедуры, которые описаны по ходу текущей лабора-торной работы. Лабораторная работа №6 СОЗДАНИЕ АДМИНИСТРАТИВНОЙ СТРАНИЦЫ Цель работы –научиться организовывать со стороны клиентского прило-жения удаленное управление правами доступа к данным БД. Содержание работы: Выполнение всех заданий по ходу лабораторной работы. Выполнение индивидуальных заданий. Пояснения к выполнению работы Для создания в приложении административной страницы используем пример базы данных c названием DB_Books, которая была создана в лабо-раторной работе №1, к которой сделано подключение через ODBC драйвер типа системного источника данных и названием DB_BooksDSN, а также используем клиентское приложение, которое было создано по ходу пояс-нений в лабораторной работе №5. При выполнении примеров и заданий обращайте внимание на соответствие названий БД, таблиц и других объек-тов проекта. В Management Studio 55 Создадим процедуру добавления логина в БД DB_Books в разделе Stored Procedures базы данных DB_Books, используя утилиту Management Studio: CREATE PROCEDURE addlogin1 @login_ char(15), @password1 char(15) AS exec sp_addlogin @login_,@password1, 'DB_Books' exec sp_adduser @login_,@login_ GO На Visual C# 2005 Создать форму, назвать FormAdmin. Добавить на главной форме в меню пункт с названием Работа с про-цедурами. В методе Click пункта меню написать код для запуска формы FormAdmin. Зайти Tool -> Choose Toolbox Items. Поставить галочки на элементах SqlCommand и SqlConnection (если таковые отсутсвуют), применить изме-нения. Добавить на форму компонент SqlConnection и в свойстве Connection-String выбрать DB_DOOK.mdf Теперь можно подключить хранимую процедуру addlogin1. На форму FormAdmin добавить компонент SqlCommand. Изменить следующие его свойства: Connection на SqlConnection1; CommandType на StoredProcedure; CommantText на addlogin1. У компонента SqlCommand1 выбрать свойтсво Parameters и в свойствах каждого параметра исправить свойство SqlDbType – на Char. На форму FormAdmin добавить 2 компонента типа TextBox (имена соответственно TextBox1, TextBox2) и 1 компонент типа Button. Рядом с компонентами типа TextBox поставить элементы Label, в которых соответ-ственно изменить свойства Text на «Введите имя нового пользователя» и «Введите пароль». На кнопке поменять название на «Выполнить запрос». В методе Click кнопки написать следующий код: try { sqlCommand1.Parameters["@login_"].Value = textBox1.Text; sqlCommand1.Parameters["@password1"].Value = textBox2.Text; sqlConnection1.Open(); sqlCommand1.ExecuteNonQuery(); sqlConnection1.Close(); } 56 catch (SqlException ex) { MessageBox.Show("Невозможно добавить пользователя!"); } Проверить работу приложения. В Management Studio Создадим процедуру добавления разрешений в БД DB_Books в раз- деле Stored Procedures базы данных DB_Books: CREATE PROCEDURE grantlogin @text1 char(250) AS declare @SQLString nvarchar(250) SET @SQLString = CAST( @text1 AS NVARCHAR(250) ) EXECUTE sp_executesql @SQLString GO На Visual C# 2005 10. На форму FormAdmin добавить еще один компонент SqlCommand (с именем SqlCommand2). Изменить следующие его свойства: Connection на SqlConnection1; CommandType на StoredProcedure; CommantText на grantlogin. У компонента SqlCommand2 выбрать Parameters и в свойствах каждого параметра исправить свойство SqlDbType – Char. На форме FormAdmin расположить два компонента ComboBox (на-пример, ComboBox1 и ComboBox2). Рядом с компонентами типа Com-boBox поставить элементы Label, в которых соответственно изменить свойства Text на «Выберите операцию» и «Выберите пользователя». В список ComboBox1 занести перечень значений: INSERT, UPDATE, DELETE. В список ComboBox2 занести перечень значений: Authors, Books, Purchases, Deliveries, Publishing_house. На форме FormAdmin расположить компонент TextBox (например, TextBox3), один компонент Button. Рядом с компонентом типа TextBox по-ставить элемент Label, в котором изменить свойства Caption на «Введите имя пользователя, которому назначается привилегия». 57 16. В методе Click созданной кнопки написать: try { sqlCommand2.Parameters["@text1"].Value = “GRANT” + ComboBox1.Text + “ON” + ComboBox2.Text + “TO” + TextBox3.Text; sqlConnection1.Open(); sqlCommand1.ExecuteNonQuery(); sqlConnection1.Close(); } catch (SqlException ex) { MessageBox.Show("Невозможно добавление разрешения!"); } 17. Запустить приложение и проверить работу. Задания к лабораторной работе №6 В вашей индивидуальной базе данных, которая была выдана по вари-антам (из лабораторной работы №1), создать 4 хранимые процедуры, кото-рые будут выполнять операции по добавлению пользователя, удалению пользователя, добавлению разрешения на одну из таблиц, удалению раз-решения на одну из таблиц. В клиентском приложении, которое было соз-дано в лабораторной работе №5 по вашему варианту, добавить на основ-ную форму в меню пункт Администрирование, который будет запускать форму Администрирование. На форме организовать запуск четырех соз-данных хранимых процедур с передачей данных в процедуры из клиент-ского приложения. Цель задания − создание удаленного управления пра-вами доступа к вашей БД. Лабораторная работа №7 СОЗДАНИЕ ОТЧЕТНЫХ ФОРМ В КЛИЕНТСКОМ ПРИЛОЖЕНИИ Цель работы –научиться создавать формы отчетных документов по дан-ным БД. Содержание работы: Выполнение всех заданий по ходу лабораторной работы. Выполнение индивидуальных заданий. Пояснения к выполнению работы 58 Для выполнения трех первых заданий используем пример базы данных c названием DB_Books, которая была создана в лабораторной работе №1. При выполнении примеров и заданий обращайте внимание на соответствие названий БД, таблиц и других объектов проекта. Отчеты во многом похожи на формы и тоже позволяют получить ре-зультаты работы запросов в наглядной форме, но только не на экране, а в виде распечатки на принтере. Таким образом, в результате работы отчета создается бумажный документ. На Visual C# 2005 есть несколько способов создания отчетов. Один из способов создание отчетов это использование генератора отчета FastReport. Генератор можно скачать с официального сайта компании или же взять дистрибутивы у преподавателя. После установки генератора не-обходимо перезапустить Visual C# 2005. Затем необходимо добавить ком-поненты FastReport как это делалось в лаб. работе 5 в пункте 22. Для создания отчета необходимо поместить компонент Report на глав-ную форму. После этого двойным щелчком нажать на компонент и вы-брать данные, которые нам нужны для составления отчета. После этого от-кроется сам редактор отчетов. Для сохранения изменений нужно просто сохранить файл отчета в любом месте. Структура отчета Отчеты состоят из разделов или секций (Bands), а разделы могут со-держать элементы управления. Для настройки разделов надо нажать на ра-бочей области на кнопку «Настроить бэнды». 1. Структура отчета состоит из следующих разделов: заголовок от- чета, подвал отчета, заголовок страници, подвал страници, область дан-ных, заголовок колонки, подвал колонки, фоновый. |