И.И. Семенова
РАЗРАБОТКА КЛИЕНТ-СЕРВЕРНЫХ
ПРИЛОЖЕНИЙ
В MICROSOFT SQL SERVER 2005
И MICROSOFT VISUAL C# 2005 EXPRESS
EDITION
Учебно-методическое пособие
Омск • 2010
Федеральное агентство по образованию
Сибирская государственная автомобильно-дорожная академия
(СибАДИ) И.И. Семенова
РАЗРАБОТКА КЛИЕНТ-СЕРВЕРНЫХ
ПРИЛОЖЕНИЙ
В MICROSOFT SQL SERVER 2005 И MICROSOFT VISUAL C# 2005 EXPRESSEDITION
Учебно-методическое пособие Омск Издательство СибАДИ УДК 681.3. ББК 32.973. С Рецензенты:канд. техн. наук, доцент В.Г. Осипов (Омский государственный технический университет) Работа одобрена редакционно-издательским советом академии в качестве учебно-методического пособия для специальностей 230102 «Автоматизированные системы обработки информации и управления», 080801 «Прикладная информатика в экономике», 090105 «Комплексное обеспечение информационной безопасности автоматизированных систем».
Семенова И.И.
С 30 Разработка клиент-серверных приложений в Microsoft SQL Server 2005 и Microsoft Visual C# 2005 Express Edition: Учебно-методическое пособие.– Омск: Изд-во СибАДИ, 2010.– 65 с.
ISBN Основной целью создания данного учебно-методического пособия стала необходимость закрепления навыков работы в одной из современных СУБД с целью создания приложений для различных предметных областей у студентов высших учебных заведений, изучающих дисциплину “Системы управления базами данных”.
Учебно-методическое пособие по курсу «Системы управления базами данных» предназначено для студентов, обучающихся по специальностям 230102, 080801, 090105.
Табл. Ил. Библиогр.: 5 назв.
© И.И. Семенова, ISBN
ОБЩИЕ ПОЛОЖЕНИЯ
В процессе выполнения лабораторных работ по дисциплине «Системы управления базами данных» студенты должны выработать навыки физического проектирования баз данных, а также навыки разработки клиентских приложений для работы с базами данных, расположенных на сервере.Изучение этих вопросов предусмотрено действующим государственным образовательным стандартом и в данном учебно-методическом пособии базируется на решении задач, актуальных для студентов специальности «Автоматизированные системы обработки информации и управления»
(АСОИУ), «Прикладная информатика в экономике» (ПИЭ), «Комплексное обеспечение информационной безопасности автоматизированных систем»
(КОИБАС).
В серии лабораторных работ используются Microsoft SQL Server 2005, Microsoft Visual C# 2005 Express Edition. Важной составной частью работ является освоение SQL стандарта. Для того чтобы приступить к выполнению этих работ, студенту уже нужно иметь минимальные навыки обращения с используемыми в них программными средствами. Эти необходимые навыки даются студентам на установочных занятиях, в начале семестра, вместе с выдачей заданий и электронных материалов.
Результаты выполнения работ рекомендуется сохранять в личных папках, так как лабораторные работы взаимоувязаны.
СОЗДАНИЕ БАЗ ДАННЫХ (БД) В MICROSOFT SQL SERVER
Цель работы – с помощью операторов языка Transact SQL научиться создавать базы данных и совокупность связанных таблиц, принадлежащих указанной базе данных.Содержание работы:
1. Познакомиться с набором утилит, входящих в состав MS SQL Server 2005.
2. Познакомиться с работой утилиты SQL Server Management Studio.
3. Создать с помощью приведенных операторов пример базы данных «Книжное дело».
4. По выданным вариантам создать персональную базу данных с набором связанных таблиц.
В качестве примера базы данных, которая будет создана программно с помощью операторов языка Transact SQL, выберем БД «Книжное дело»
(рис. 1.1). Структура таблиц данной БД представлена в табл. 1.1-1.5.
Amount Code_purchase Название поля Тип поля Описание поля Date_order DateTime Code_delivery Int Type_purchase Bit Code_purchase Int Справочник книг (название таблицы Books) Название поля Тип поля Описание поля Title_book Char Code_author Int Code_publish Int Справочник авторов (название таблицы Authors) Название поля Тип поля Описание поля Code_author Int Name_author Char Birthday DateTime Справочник поставщиков (название таблицы Deliveries) Название поля Тип поля Описание поля Code_delivery Int Name_delivery Char Name_company Char Справочник издательств (название таблицы Publishing_house) Название поля Тип поля Описание поля Code_publish Int Запустить SQL Server Management Studio, проверить включение сервера. Для запуска MS SQL Server 2005 выберите утилиту SQL Server Management Studio и запустите ее (в лабораторном классе попросить инженера или лаборанта запустить эту утилиту от имени администратора, на протяжении занятия оставить ее открытой. Если совместно с преподавателем в SQL Server была создана учетная запись Study, то при подключении нужно в разделе Server Type выбрать DataBase Engine, в разделе Server Name соответствующее вашей машине название, затем нажмите кнопку ().
Для написания программного кода в SQL Server Management Studio нужно нажать кнопку «Создать запрос» («New query») на панели инструментов «Стандартная» («Standart»).
Создать новую базу данных с названием DB_Books с помощью команды:
CREATE DATABASE DB_BOOKS
Для выполнения команды нажать F5.Открыть утилиту SQL Server Management Studio. Проверить наличие БД DB_Books, если ее не видите в разделе DataBases, то нажмите F5 для обновления.
Cоздать в ней перечисленные таблицы с помощью следующих команд (для создания новой страницы для кода в SQL Server Management Studio нажать кнопку «Создать запрос»):
use DB_BOOKS CREATE TABLE Authors(Code_author INT PRIMARY KEY, name_author CHAR(30), Birthday DATETIME) CREATE TABLE Publishing_house(Code_publish INT PRIMARY KEY, Publish CHAR(30), City CHAR(20)) CREATE TABLE Books(Code_book INT PRIMARY KEY, Title_book CHAR(40), Code_author INT FOREIGN KEY REFERENCES Authors(Code_author), Pages INT, Code_publish INT FOREIGN KEY REFERENCES Publishing_house(Code_publish)) CREATE TABLE Deliveries(Code_delivery INT PRIMARY KEY, Name_delivery CHAR(30), Name_company CHAR(20), Address VARCHAR(100), Phone BIGINT, INN CHAR(13)) CREATE TABLE Purchases(Code_purchase INT PRIMARY KEY, Code_book INT FOREIGN KEY REFERENCES Books(Code_book), Date_order SMALLDATETIME, Code_delivery INT FOREIGN KEY REFERENCES Deliveries(Code_delivery), Type_purchase BIT, Cost FLOAT, Amount INT) Запустите команду клавишей F5.
В утилите SQL Server Management Studio проверить наличие БД DB_Books и таблиц в ней.
В разделе диаграмм создать новую диаграмму, в которую добавить из списка пять наших таблиц, проверить связи между таблицами.
Использованные операторы:
PRIMARY KEY – признак создания ключевого поля.
FOREIGN KEY...REFERENCES… – признак создания поля связи с другой таблицей.
CREATE TABLE – команда создания таблицы в текущей БД.
USE – сделать активной конкретную БД.
CREATE DATABASE – команда создания новой БД.
Варианты заданий к лабораторной работе № Общие положения В утилите SQL Server Management Studio создать новую базу данных с помощью оператора Create Database, название БД определить, исходя из предметной области. Закомментировать оператор (-- – однострочный комментарий, /* */ – многострочный комментарий). Программно сделать активной созданную БД с помощью оператора Use. Создать перечисленные таблицы c помощью операторов Create table, причем самостоятельно определить типы таблиц (родительская или подчиненная), типы полей и их размеры, найти поля типа Primary key и Foreign key. Сохранить файл программы с названием ФамилияСтудента_ЛАб_1_№варианта. В SQL Server Management Studio в разделе диаграмм созданной БД сгенерировать новую диаграмму, проверить связи между таблицами.
Вариант 1. БД «Учет выданных подарков несовершеннолетним детям сотрудников предприятия»
Должность Подразделение Дата приема на работу Вариант 2. БД «Учет выполненных ремонтных работ»
Дата производства Дата приема в ремонт Отчество мастера Вариант 3. БД «Продажа цветов»
Вариант 4. БД «Поступление лекарственных средств»
Название лекарства Код поставщика Сокращенное название Показания к применению Дата поставки Полное название Единица измерения Цена за единицу Юридический адрес Название производителя Код поступления ФИО руководителя Вариант 5. БД «Списание оборудования»
Название оборудования Причина списания Фамилия Вариант 6. БД «Поваренная книга»
Порядок приготовления Количество калорий Количество углеводов Вариант 7. БД «Регистрация входящей документации»
Код регистратора Код документа Код организацииотправителя Дата приема на работу Код организации- ФИО руководителя Вариант 8. БД «Увольнение сотрудника»
Должность Код статьи увольнения Номер пункта/ подпункта Подразделение Код сотрудника Дата приема на работу Денежная компенсация Вариант 9. БД «Приказ на отпуск»
Подразделение Код сотрудника Дата приема на работу Код отпуска Вариант 10. БД «Регистрация выходящей документации»
Код отправителя Код документа Код организацииполучателя Отчество Краткое содержание до- Юридический адрес Дата приема на работу Код организации- ФИО руководителя Вариант 11. БД «Назначение на должность»
Дата приема на работу Код сотрудника Вариант 12. БД «Выдача оборудования в прокат»
Отчество Дата окончания проката Дата поступления в прокат Серия и номер пас- Стоимость порта Вариант 13. БД «Списание оборудования из проката»
Код оборудования Код оборудования Код сотрудника Название оборудования Причина списания Фамилия Дата поступления в прокат Код сотрудника Отчество Вариант 14. БД «Прием цветов в магазин»
Название цветка Дата поступления Сокращенное название Дополнительные сведения Вариант 15. БД «Регистрация клиентов гостиницы»
Вариант 16. БД «Возврат оборудования в службу проката»
Серия и номер паспорта Штраф Вариант 17. БД «Учет материальных ценностей на предприятии»
Код ценности Код постановки на учет Код материально ответственного Закупочная стоимость Дата постановки на учет Отчество Вариант 18. БД «Состав ремонтных работ»
Код ремонтной работы Код ремонтной работы Код мастера Название этапа работы Стоимость ремонта Имя мастера Стоимость этапа Количество дней ремонта Отчество мастера Вариант 19. БД «Продажа лекарственных средств»
Количество в упаковке Код записи в чеках Название производителя Вариант 20. БД «Учет исполнения по входящей документации»
Подразделение Факт исполнения Организация-отправитель
ИСПОЛЬЗОВАНИЕ ОПЕРАТОРОВ МАНИПУЛИРОВАНИЯ
ДАННЫМИ В MICROSOFT SQL SERVER
Цель работы – научиться использовать операторы манипулирования данными Select, Insert, Update, Delete.Содержание работы:
1. Создать с помощью приведенных операторов пример базы данных «Книжное дело», описанный в предыдущей лабораторной работе (если БД отсутствует на сервере).
2. С помощью операторов Insert создать программу в SQL Server Management Studio через «Создать запрос» для заполнения таблиц данными (по 3-5 записей).
3. С помощью оператора Select по заданиям выполнить запросы к БД.
Вся теория по данной работе представлена в конспекте лекций. Также при необходимости можно воспользоваться справочными материалами MS SQL Server 2005, запустив утилиту Book OnLine.
Варианты заданий к лабораторной работе № Общие положения Создать новую базу данных с названием DB_Books с помощью оператора Create Database, создать в ней перечисленные таблицы c помощью операторов Create table по примеру лабораторной работы №1. Сохранить файл программы с названием ФамилияСтудента_ЛАб_1_DB_Books. В утилите SQL Server Management Studio с помощью кнопки «Создать запрос» создать отдельные программы по каждому запросу, которые сохранять на диске с названием: ФамилияСтудента_ЛАб_2_№_задания. В сами программы копировать текст задания в виде комментария. Можно сохранять все выполненные запросы в одном файле. Для проверки работы операторов SELECT предварительно создайте программу, которая с помощью операторов INSERT заполнит все таблицы БД DB_Books несколькими записями, сохраните программы с названием ФамилияСтудента_ЛАб_2_Insert.
Сортировка 1. Выбрать все сведения о книгах из таблицы Books и отсортировать результат по коду книги (поле Code_book).
2. Выбрать из таблицы Books коды книг, названия и количество страниц (поля Code_book, Title_book и Pages), отсортировать результат по названиям книг (поле Title_book по возрастанию) и по полю Pages (по убыванию).
3. Выбрать из таблицы Deliveries список поставщиков (поля Name_delivery, Phone и INN), отсортировать результат по полю INN (по убыванию).
Изменение порядка следования полей 4. Выбрать все поля из таблицы Deliveries таким образом, чтобы в результате порядок столбцов был следующим: Name_delivery, INN, Phone, Address, Code_delivery.
5. Выбрать все поля из таблицы Publishing_house таким образом, чтобы в результате порядок столбцов был следующим: Publish, City, Code_publish.
Выбор некоторых полей из двух таблиц 6. Выбрать из таблицы Books названия книг и количество страниц (поля Title_book и Pages), а из таблицы Authors выбрать имя соответствующего автора книги (поле Name_ author).
7. Выбрать из таблицы Books названия книг и количество страниц (поля Title_book и Pages), а из таблицы Deliveries выбрать имя соответствующего поставщика книги (поле Name_delivery).
8. Выбрать из таблицы Books названия книг и количество страниц (поля Title_book и Pages), а из таблицы Publishing_house выбрать название соответствующего издательства и места издания (поля Publish и City).
Условие неточного совпадения 9. Выбрать из справочника поставщиков (таблица Deliveries) названия компаний, телефоны и ИНН (поля Name_company, Phone и INN), у которых название компании (поле Name_company) начинается с ‘ОАО’.
10. Выбрать из таблицы Books названия книг и количество страниц (поля Title_book и Pages), а из таблицы Authors выбрать имя соответствующего автора книг (поле Name_ author), у которых название книги начинается со слова ‘Мемуары’.
11. Выбрать из таблицы Authors фамилии, имена, отчества авторов (поле Name_ author), значения которых начинаются с ‘Иванов’.
Точное несовпадение значений одного из полей 12. Вывести список названий издательств (поле Publish) из таблицы Publishing_house, которые не находятся в городе ‘Москва’ (условие по полю City).
13. Вывести список названий книг (поле Title_book) из таблицы Books, которые выпущены любыми издательствами, кроме издательства ‘ПитерСофт’ (поле Publish из таблицы Publishing_house).
Выбор записей по диапазону значений (Between) 14. Вывести фамилии, имена, отчества авторов (поле Name_author) из таблицы Authors, у которых дата рождения (поле Birthday) находится в диапазоне 01.01.1840 – 01.06.1860.
15. Вывести список названий книг (поле Title_book из таблицы Books) и количество экземпляров (поле Amount из таблицы Purchases), которые были закуплены в период с 12.03.2003 по 15.06.2003 (условие по полю Date_order из таблицы Purchases).
16. Вывести список названий книг (поле Title_book) и количество страниц (поле Pages) из таблицы Books, у которых объем в страницах укладывается в диапазон 200 – 300 (условие по полю Pages).
17. Вывести список фамилий, имен, отчеств авторов (поле Name_author) из таблицы Authors, у которых фамилия начинается на одну из букв диапазона ‘В’ – ‘Г’ (условие по полю Name_author).
Выбор записей по диапазону значений (In) 18. Вывести список названий книг (поле Title_book из таблицы Books) и количество (поле Amount из таблицы Purchases), которые были поставлены поставщиками с кодами 3, 7, 9, 11 (условие по полю Code_delivery из таблицы Purchases).
19. Вывести список названий книг (поле Title_book) из таблицы Books, которые выпущены следующими издательствами: ‘Питер-Софт’, ‘Альфа’, ‘Наука’ (условие по полю Publish из таблицы Publishing_house).
20. Вывести список названий книг (поле Title_book) из таблицы Books, которые написаны следующими авторами: ‘Толстой Л.Н.’, ‘Достоевский Ф.М.’, ‘Пушкин А.С.’ (условие по полю Name_author из таблицы Authors).
Выбор записей с использованием Like 21. Вывести список авторов (поле Name_author) из таблицы Authors, которые начинаются на букву ‘К’.
22. Вывести названия издательств (поле Publish) из таблицы Publishing_house, которые содержат в названии сочетание ‘софт’.
23. Выбрать названия компаний (поле Name_company) из таблицы Deliveries, у которых значение оканчивается на ‘ский’.
Выбор записей по нескольким условиям 24. Выбрать коды поставщиков (поле Code_delivery), даты заказов (поле Date_order) и названия книг (поле Title_book), если количество книг (поле Amount) в заказе больше 100 или цена (поле Cost) за книгу находится в диапазоне от 200 до 500.
25. Выбрать коды авторов (поле Code_author), имена авторов (поле Name_author), названия соответствующих книг (поле Title_book), если код издательства (поле Code_Publish) находится в диапазоне от 10 до 25 и количество страниц (поле Pages) в книге больше 120.
26. Вывести список издательств (поле Publish) из таблицы Publishing_house, в которых выпущены книги, названия которых (поле Title_book) начинаются со слова ‘Труды’ и город издания (поле City) – ‘Новосибирск’.
Многотабличные запросы (выборка из двух таблиц, выборка из трех таблиц с использованием JOIN) 27. Вывести список названий компаний-поставщиков (поле Name_company) и названия книг (поле Title_book), которые они поставили в период с 01.01.2002 по 31.12.2003 (условие по полю Date_order).
28. Вывести список авторов (поле Name_author), книги которых были выпущены в издательстве ‘Мир’ (условие по полю Publish).
29. Вывести список поставщиков (поле Name_company), которые поставляют книги издательства ‘Питер’ (условие по полю Publish).
30. Вывести список авторов (поле Name_author) и названия книг (поле Title_book), которые были поставлены поставщиком ‘ОАО Книготорг’ (условие по полю Name_company).
Вычисления 31. Вывести суммарную стоимость партии одноименных книг (использовать поля Amount и Cost) и название книги (поле Title_book) в каждой поставке.
32. Вывести стоимость одной печатной страницы каждой книги (использовать поля Cost и Pages) и названия соответствующих книг (поле Title_book).
33. Вывести количество лет с момента рождения авторов (использовать поле Birthday) и имена соответствующих авторов (поле Name_author).
Вычисление итоговых значений с использованием агрегатных функций 34. Вывести общую сумму поставок книг (использовать поле Cost), выполненных ‘ЗАО Оптторг’ (условие по полю Name_company).
35. Вывести общее количество всех поставок (использовать любое поле из таблицы Purchases), выполненных в период с 01.01.2003 по 01.02.2003 (условие по полю Date_order).
36. Вывести среднюю стоимость (использовать поле Cost) и среднее количество экземпляров книг (использовать поле Amount) в одной поставке, где автором книги является ‘Акунин’ (условие по полю Name_author).
37. Вывести все сведения о поставке (все поля таблицы Purchases), а также название книги (поле Title_book) с минимальной общей стоимостью (использовать поля Cost и Amount).
38. Вывести все сведения о поставке (все поля таблицы Purchases), а также название книги (поле Title_book) с максимальной общей стоимостью (использовать поля Cost и Amount).
Изменение наименований полей 39. Вывести название книги (поле Title_book), суммарную стоимость партии одноименных книг (использовать поля Amount и Cost), поместив в результат в поле с названием Itogo, в поставках за период с 01.01.2002 по 01.06.2002 (условие по полю Date_order).
40. Вывести стоимость одной печатной страницы каждой книги (использовать поля Cost и Pages), поместив результат в поле с названием One_page, и названия соответствующих книг (поле Title_book).
41. Вывести общую сумму поставок книг (использовать поле Cost) и поместить результат в поле с названием Sum_cost, выполненных ‘ОАО Луч’ (условие по полю Name_company).
Использование переменных в условии 42. Вывести список сделок (все поля из таблицы Purchases) за последний месяц (условие с использованием поля Date_order).
43. Вывести список авторов (поле Name_author), возраст которых меньше заданного пользователем (условие с использованием поля Birthday).
44. Вывести список книг (поле Title_book), которых закуплено меньше, чем указано в запросе пользователя (условие с использованием поля Amount).
Использование переменных вместо названий таблиц 45. Вывести список названий компаний-поставщиков (поле Name_company) и названия книг (поле Title_book), которые они поставили.
46. Вывести список авторов (поле Name_author), книги которых были выпущены в издательствах ‘Мир’, ‘Питер Софт’, ‘Наука’ (условие по полю Publish).
47. Вывести список издательств (поле Name_company), книги которых были поставлены по цене 150 руб. (поле Cost).
Выбор результата в курсор 48. Вывести список названий книг (поле Title_book) и количества страниц (поле Pages) в каждой книге и поместить результат в курсор с названием Temp1.
49. Вывести список названий компаний-поставщиков (поле Name_company) и поместить результат в курсор с названием Temp2.
50. Вывести список авторов (поле Name_author) и поместить результат в курсор с названием Temp3.
Использование функций совместно с подзапросом 51. Вывести список книг (поле Title_book), у которых количество страниц (поле Pages) больше среднего количества страниц всех книг в таблице.
52. Вывести список авторов (поле Name_author), возраст которых меньше среднего возраста всех авторов в таблице (условие по полю Birthday).
53. Вывести список книг (поле Title_book), у которых количество страниц (поле Pages) равно минимальному количеству страниц книг, представленных в таблице.
Использование квантора существования в запросах 54. Вывести список издательств (поле Publish), книги которых были приобретены оптом (‘опт’ из поля Type_Purchase).
55. Вывести список авторов (поле Name_author), книг которых нет в таблице Books.
56. Вывести список книг (поле Title_book), которые были поставлены поставщиком ‘ЗАО Квантор’ (условие по полю Name_company).
Оператор обработки данных Update 57. Изменить в таблице Books содержимое поля Pages на 300, если код автора (поле Code_author) =56 и название книги (поле Title_book) =’Мемуары’.
58. Изменить в таблице Deliveries содержимое поля Address на ‘нет сведений’, если значение поля является пустым.
59. Увеличить в таблице Purchases цену (поле Cost) на 20 процентов, если заказы были оформлены в течение последнего месяца (условие по полю Date_order).
Оператор обработки данных Insert 60. Добавить в таблицу Purchases новую запись, причем так, чтобы код покупки (поле Code_purchase) был автоматически увеличен на единицу, а в тип закупки (поле Type_purchase) внести значение ‘опт’.
61. Добавить в таблицу Books новую запись, причем вместо ключевого поля поставить код (поле Code_book), автоматически увеличенный на единицу от максимального кода в таблице, вместо названия книги (поле Title_book) написать ‘Наука. Техника. Инновации’.
62. Добавить в таблицу Publish_house новую запись, причем вместо ключевого поля поставить код (поле Code_publish), автоматически увеличенный на единицу от максимального кода в таблице, вместо названия города – ‘Москва’ (поле City), вместо издательства – ‘Наука’ (поле Publish).
Оператор обработки данных Delete 63. Удалить из таблицы Purchases все записи, у которых количество книг в заказе (поле Amount) = 0.
64. Удалить из таблицы Authors все записи, у которых нет имени автора в поле Name_Author.
65. Удалить из таблицы Deliveries все записи, у которых не указан ИНН (поле INN пустое).
ОСВОЕНИЕ ПРОГРАММИРОВАНИЯ С ПОМОЩЬЮ
ВСТРОЕННОГО ЯЗЫКА TRANSACT SQL
В MICROSOFT SQL SERVER
Цель работы – знакомство с основными приципами программирования в MS SQL Server средствами встроенного языка Transact SQL.Содержание работы:
1. Знакомство с правилами обозначения синтаксиса команд в справочной системе MS SQL Server (утилита Books Online).
2. Изучение правил написания программ на Transact SQL.
3. Изучение правил построения идентификаторов, правил объявления переменных и их типов.
4. Изучение работы с циклами и ветвлениями.
5. Изучение работы с переменными типа Table и Cursor.
6. Проработка всех примеров, анализ результатов их выполнения.
7. Выполнение индивидуальных заданий по вариантам.
Для освоения программирования используем пример базы данных c названием DB_Books, которая была создана в лабораторной работе №1.
При выполнении примеров и заданий обращайте внимание на соответствие названий БД, таблиц и других объектов проекта.
Специальные знаки и простейшие операторы в Transact SQL
QUOTED_IDENTIFIER OFF
Знак сложения или конкатена- [ ] Аналог кавычек, в них можно Однострочный комментарий Многострочный комментарий или комментарий с текущей позиции и до конца строки Идентификаторы – это имена объектов, на которые можно ссылаться в программе, написанной на языке Transact SQL. Первый символ может состоять из букв английского алфавита или “_”, “@”, “#”. Остальные дополнительно из цифр и «$».Имя идентификатора не должно совпадать с зарезервированным словом.
Для ограничителей идентификаторов при установленном параметре
SET QUOTED_IDENTIFIER ON
можно использовать как квадратные скобки, так и одинарные кавычки, а строковые значения только в одинарных кавычках (режим по умолчанию).Если использовать установленный параметр в режиме
SET QUOTED_IDENTIFIER OFF,
то в качестве ограничителей идентификаторов можно использовать только квадратные скобки, а строковые значения указываются в одинарных или двойных кавычках.Переменные используются для сохранения промежуточных данных в хранимых процедурах и функциях. Все переменные считаются локальными.
Имя переменной должно начинаться с @.
Синтаксис в обозначениях MS SQL Server:
DECLARE @имя_переменной1 тип_переменной, …, @имя_переменнойN тип_переменной Если тип переменной предполагает указание размера, то используется следующий сиснтаксис для объявления переменных:
DECLARE @имя_переменной1 тип_переменной (размер), …, @имя_переменнойN тип_переменной(размер) Пример:
DECLARE @a INT, @b numeric(10,2) DECLARE @str CHAR(20) Присвоение значений переменным и вывод значений на экран Присвоение с помощью SET – обычное присвоение, синтаксис:
SET @имя_переменной = значение.
Пример:
DECLARE @a INT, @b numeric(10,2) SET @a = SET @b = (@a+@a)/ SELECT @b --вывод на экран результата Присвоение с помощью SELECT – помещение результата запроса в переменную. Если в результате выполнения запроса не будет возвращено ни одной строки, то значение переменной не меняется, т.е. остается старым.
Пример:
DECLARE @a INT SELECT @a = COUNT(*) FROM Authors Пример:
DECLARE @str CHAR(30) SELECT @str = name FROM Authors В данном примере в переменную поместится последнее значение из результата запроса.
Пример:
DECLARE @a INT SET @a = (SELECT COUNT(*) FROM Authors) Оператор SET DATEFORMAT dmy | ymd | mdy задает порядок следования компонентов даты.
Пример:
SET DATEFORMAT dmy DECLARE @d DateTime SET @d = ’31.01.2005 13:23:15’ SET @d = @d+ SELECT @d Создание временной таблицы через переменную типа TABLE Объявляется через DECLARE с указанием в скобках столбцов таблицы, их типов, размеров, значений по умолчанию, а также индексов типа PRIMARY KEY или UNIQUE.
Пример:
DECLARE @mytable TABLE(id INT, myname CHAR(20) DEFAULT ‘Введите имя’) INSERT INTO @mytable(id) VALUES (1) SELECT * FROM @mytable Пример:
DECLARE @mytable TABLE(id INT, myname CHAR(20) DEFAULT ‘Введите имя’) INSERT @mytable SELECT Code_publish, City FROM Publishing_house SELECT * FROM @mytable Функция CAST возвращает значение, преобразованное к указанному типу:
CAST(@переменная или значение AS требуемый_тип_данных) Пример:
DECLARE @d DateTime, @str char(20) SET @d = ’31.01.2005 13:23:15’ SET @str = CAST(@d AS Char(20)) SELECT 2str Функция CONVERT возвращает значение, преобразованное к указанному типу по заданному формату. Изучить дополнительно, по желанию.
BEGIN /* в них нельзя помещать команды, изменяющие структуры объектов БД. Операторские скобки должны содержать хотя бы один оператор. Требуются для конструкций поливариантных ветвлений, условных и циклических конструкций END Синтаксис:
IF условие Набор операторов ELSE Набор операторов Пример:
DECLARE @a INT DECLARE @str CHAR(30) SET @a = (SELECT COUNT(*) FROM Authors) IF @a > SET @str = 'Количество авторов больше 10' ELSE SET @str = 'Количество авторов = ' + str(@a) Синтаксис:
WHILE Условие Набор операторов BREAK Набор опреторов
CONTINUE
Конструкции BREAK и CONTINUE являются необязательными.Цикл можно принудительно остановить, если в его теле выполнить команду BREAK. Если же нужно начать цикл заново, не дожидаясь выполнения всех команд в теле, необходимо выполнить команду CONTINUE.
Пример:
DECLARE @a INT SET @a = WHILE @a 40) AND (@a=@Count_pages Задание 2. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью команды Проверьте результат.
Пример создания процедуры c входными параметрами:
CREATE PROCEDURE Count_Books_Title @Count_pages as Int, @Title AS Char(10) Select count(Code_book) from Books WHERE Pages>=@Count_pages AND Title_book LIKE @Title Задание 3. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью команды Проверьте результат.
Пример создания процедуры c входными параметрами и выходным параметром:
CREATE PROCEDURE Count_Books_Itogo @Count_pages Int, @Title Char(10), @Itogo Int OUTPUT Select @Itogo = count(Code_book) from Books WHERE Pages>=@Count_pages AND Title_book LIKE @Title Задание 4. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите с помощью набора команд:
Declare @q As int EXEC Count_Books_Itogo 100, 'П%', @q output Проверьте результат.
Пример создания процедуры c входными параметрами и RETURN:
CREATE PROCEDURE checkname @param int IF (SELECT Name_author FROM authors WHERE Code_author = @param) = 'Пушкин А.С.' RETURN ELSE RETURN Задание 5. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью команд:
DECLARE @return_status int EXEC @return_status = checkname SELECT 'Return Status' = @return_status Пример создания процедуры без параметров для увеличения значения ключевого поля в таблице Purchases в 2 раза:
CREATE PROC update_proc UPDATE Purchases SET Code_purchase = Code_purchase* Процедура не возвращает никаких данных.
Задание 6. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью команды EXEC update_proc Пример процедуры с входным параметром для получения всей информации о конкретном авторе:
CREATE PROC select_author @k CHAR(30) 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='Пушкин А.С.' Пример создания процедуры с входным параметром и значением по умолчанию для увеличения значения ключевого поля в таблице Purchases в заданное количество раза (по умолчанию в 2 раза):
CREATE PROC update_proc @p INT = 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 SELECT @c=count(Code_purchase) from Purchases WHERE Date_order BETWEEN @d1 AND @d SET @c = ISNULL(@c,0) Задание 9. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью команд:
DECLARE @c2 INT EXEC count_purchases ’01-jun-2006’, ’01-jul-2006’, @c2 OUTPUT SELECT @c Варианты заданий к лабораторной работе № Общие положения В утилите 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) 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, причем самостоятельно определить имена процедур. Каждая процедура будет выполнять по одному SQL запросу, которые представлены в виде отдельных заданий по вариантам.
Сохранить файл программы с названием Фамилия Студента_Лаб_4_№варианта. В SQL Server Management Studio в разделе хранимых процедур индивидуальной БД проверить наличие процедур.
Вариант 1. Вывести список сотрудников, у которых есть хотя бы один ребенок.
2. Вывести список детей, которым выдали подарки в указанный период.
3. Вывести список родителей, у которых есть несовершеннолетние дети.
4. Вывести информацию о подарках со стоимостью больше указанного числа, отсортированных по дате.
Вариант 1. Вывести список приборов с указанным типом.
2. Вывести количество отремонтированных приборов и общую стоимость ремонтов у указанного мастера.
3. Вывести список владельцев приборов и количество их обращений, отсортированный по количеству обращений по убыванию.
4. Вывести информацию о мастерах с разрядом больше указанного числа или с датой приема на работу меньше указанной даты.
Вариант 1. Вывести список цветков с указанным типом листа.
2. Вывести список кодов продаж, по которым продано цветов на сумму больше указанного числа.
3. Вывести дату продажи, сумму, продавца и цветок по указанному коду продажи.
4. Вывести список цветов и сорт для цветов с высотой больше указанного числа или цветущий.
Вариант 1. Вывести список лекарств с указанным показанием к применению.
2. Вывести список дат поставок, по которым продано больше указанного числа одноименного лекарства.
3. Вывести дату поставки, сумму, ФИО руководителя от поставщика и название лекарства по коду поступления больше указанного числа.
4. Вывести список лекарств и единицы измерения для лекарств с количеством в упаковке больше указанного числа или кодом лекарства меньше определенного значения.
Вариант 1. Вывести список сотрудников с указанной должностью.
2. Вывести список списанного оборудования по указанной причине.
3. Вывести дату поступления, название оборудования, ФИО ответственного и дату списания для оборудования, списанного в указанный 4. Вывести список оборудования с указанным типом или с датой поступления больше определенного значения.
Вариант 1. Вывести список блюд с весом больше указанного числа.
2. Вывести список продуктов, в названии которых встречается указанный фрагмент слова.
3. Вывести объем продукта, название блюда, название продукта с кодом блюда от указанного начального значения по определенному конечному значению.
4. Вывести порядок приготовления блюда и название блюда с количеством углеводов больше определенного значения или количеством калорий больше указанного значения.
Вариант 1. Вывести список сотрудников с указанной должностью.
2. Вывести список документов, в содержании которых встречается указанный фрагмент слова.
3. Вывести дату регистрации, тип документа, ФИО регистратора и название организации для документов, зарегистрированных в указанный период.
4. Вывести список зарегистрированных документов с определенным типом документа или с датой регистрации больше указанного значения.
Вариант 1. Вывести список сотрудников с указанной причиной увольнения.
2. Вывести список документов с датой регистрации в указанный период.
3. Вывести дату регистрации, причину увольнения, ФИО сотрудника для документов, зарегистрированных в указанный период.
4. Вывести список зарегистрированных документов с кодом документа в указанном диапазоне.
Вариант 1. Вывести список сотрудников, бравших отпуск указанного типа.
2. Вывести список документов с датой регистрации в указанный период.
3. Вывести дату регистрации, тип отпуска, ФИО сотрудника для документов, зарегистрированных в указанный период.
4. Вывести список зарегистрированных документов с кодом документа в указанном диапазоне.
Вариант 1. Вывести список сотрудников с указанной должностью.
2. Вывести список документов, в содержании которых встречается указанный фрагмент слова.
3. Вывести дату регистрации, тип документа, ФИО отправителя и название организации для документов, зарегистрированных в указанный период.
4. Вывести список зарегистрированных документов с указанным типом документа или с кодом документа меньше определенного значения.
Вариант 1. Вывести список сотрудников, назначенных на указанную должность.
2. Вывести список документов с датой регистрации в указанный период.
3. Вывести дату регистрации, должность, ФИО сотрудника для документов, зарегистрированных в указанный период.
4. Вывести список зарегистрированных документов с кодом документа в указанном диапазоне.
Вариант 1. Вывести список оборудования с указанным типом.
2. Вывести список оборудования, которое брал в прокат определенный 3. Вывести список лиц, бравших оборудование в прокат и количество их обращений, отсортированный по количеству обращений по убыванию.
4. Вывести информацию о клиентах, отсортированных по адресам.
Вариант 1. Вывести список оборудования с указанным типом.
2. Вывести список оборудования, которое списал определенный сотрудник.
3. Вывести количество списанного оборудования, сгруппированного по типам оборудования.
4. Вывести информацию о сотрудниках с датой приема на работу больше определенной даты.
Вариант 1. Вывести список цветков с указанным типом листа.
2. Вывести список кодов поступлений, по которым продано цветов на суммы больше определенного значения.
3. Вывести дату поступления, сумму, названия поставщика и цветов по определенному коду поставщика.
4. Вывести список цветов и сорт для цветов с высотой больше определенного числа или цветущий.
Вариант 1. Вывести список клиентов, заехавших в номера в указанный период.
2. Вывести общую сумму оплат за номера для каждого клиента.
3. Вывести дату заезда, тип номера, ФИО клиентов, зарегистрированных в указанный период.
4. Вывести список зарегистрированных клиентов в номерах определенного типа.
Вариант 1. Вывести список оборудования с указанным типом.
2. Вывести список оборудования, которое брал в прокат определенный 3. Вывести список лиц, бравших оборудование в прокат и количество их обращений, отсортированных по количеству обращений по убыванию.
4. Вывести информацию о клиентах, отсортированных по адресам.
Вариант 1. Вывести список ценностей с закупочной стоимостью больше определенного значения или сроком гарантии больше указанного числа.
2. Вывести список мест нахождения материальных ценностей, в названии которых встречается указанное слово.
3. Вывести сумму стоимости ценностей с кодом в указанном диапазоне.
4. Вывести список материально ответственных лиц с датой приема на работу в указанном диапазоне.
Вариант 1. Вывести список ремонтных работ, выполненных определенным мастером.
2. Вывести список этапов работ, входящих в работы, в названии которых встречается указанное слово.
3. Вывести сумму стоимости этапов ремонтных работ для работ с кодом в указанном диапазоне.
4. Вывести список мастеров с датой приема на работу в указанном диапазоне.
Вариант 1. Вывести список лекарств с определенным показанием.
2. Вывести список номеров чеков, по которым продано больше определенного числа лекарств.
3. Вывести дату продажи, сумму, ФИО кассира и лекарство по чеку с указанным номером.
4. Вывести список лекарств и единицы измерения для лекарств с количеством в упаковке больше указанного числа или кодом лекарства меньше определенного значения.
Вариант 1. Вывести список сотрудников с указанной должностью.
2. Вывести список документов, в содержании которых встречается указанный фрагмент слова.
3. Вывести дату регистрации, тип документа, ФИО исполнителя и факт исполнения для документов, зарегистрированных в указанный период.
4. Вывести список зарегистрированных документов с указанным типом документа или с кодом документа в определенном диапазоне.
СОЗДАНИЕ КЛИЕНТСКОЙ ЧАСТИ ПРИЛОЖЕНИЯ
ДЛЯ ПРОСМОТРА, РЕДАКТИРОВАНИЯ ДАННЫХ БД.
ВЫЗОВ ХРАНИМЫХ ПРОЦЕДУР ИЗ КЛИЕНТСКОЙ ЧАСТИ
Лабоработные работы перевел со среды Delphi на С# студент группы ИВТ-447 ОмГТУ Крындач Егор Юрьевич, большое ему за это спасибо!Цель работы – научиться создавать клиентское приложение для работы с базой данных с применением встроенных инструментов на Visual C# 2005.
Содержание работы:
1. Выполнение всех заданий по ходу лабораторной работы.
2. Выполнение индивидуальных заданий.
Для создания клиентского приложения на Visual C# 2005 используем пример базы данных c названием DB_Books, которая была создана в лабораторной работе №1. При выполнении примеров и заданий обращайте внимание на соответствие названий БД, таблиц и других объектов проекта.
На Visual C# 2005:
1. В проекте выбираем меню Tools => Connect to DataBase.
2. В открывшемся окне в поле Data Source ставим Microsoft SQL Server, в поле Server Name – SQLEXPRESS, далее в поле Select or enter DB name выбирете имя БД, к которой будем подключаться, и нажмите OK.
3. Теперь открыв окно Server explorer можно увидеть подключенную БД. Нажав на нее, в окне свойств копируем Connection String, она еще пригодится.
4. На форму добавить 5 компонентов типа DataGridView (переименовать компоненты на Purchases, Books, Authors, Deliveries, Publish).
5. Во вкладке Data выберем Add New Data Source. В появившемся окне выберем DataBase и нажмем Next. Выбераем нашу БД, жмем Next. В появившемся окне поставим галочку на пункте Table (выбераем все созданные таблици). Жмем Finish.
6. У каждой таблици DataGridView изменим свойство DataSource на соответствующие названию этой таблици:
7. На основной форме (Form1) добавить компонент. В редакторе меню сделать первый пункт «Работа с таблицами» и в подменю пункты: «Авторы», «Книги», «Издательства», «Поставщики», «Поставки».
8. Создать пять форм, каждую из которых назвать: 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();
10. На формы FormAuthors, FormPurchases, FormBooks, FormDeliveries, FormPublish добавить по паре компонент типа DataGridView и BindingNavigator. Настроить у DataGridView свойство DataSource для связи с соответствующим источником данных. Затем необходимо настроить у BindingNavigator свойство BindingSource для связи с созданной таблицей(значение должно совпадать со значением свойства элемента DataGridView).
11. Проверить работу приложения.
12. На форму FormBooks добавить 3 компонента типа TextBox и компонента ComboBox.
У 1-го компонента TextBox изменить свойства:
У 2-го компонента TextBox изменить свойства:
У 1-го компонента ComboBox изменить свойства:
SelectedValue booksBindingSource – Code_author DataSource authorsBindingSource У 3-го компонента TextBox изменить свойства:
У 2-го компонента ComboBox изменить свойства:
SelectedValue booksBindingSource – Code_publish DataSource publishinghouseBindingSource 13. У компонента DataGridView убрать все галочки со свойств редактирования и добавления.
14. На форму FormBooks добавить компонент типа Button (кнопка обновления данных), свойство Text изменить на «Обновить» и прописать событие Click:
this.booksBindingSource.EndEdit();
this.booksTableAdapter.Update(this.dB_BOOKSDataSet.Books);
15. Аналогично для остальных форм добавить элементы типа TextBox 16. Проверить работу приложения.
17. На форму FormBooks добавить 5 компонентов типа Button.
У 1-го компонента Button изменить свойства и метод:
Text Фильтр по текущему издательству;
В методе Click кнопки написать код:
int bb = dataGridView1.CurrentCell.RowIndex;
booksBindingSource.Filter = "Code_Publish = " + У 2-го компонента Button изменить свойства и метод:
Text Фильтр по текущему названию книги.
В методе Click кнопки написать код:
int bb = dataGridView1.CurrentCell.RowIndex;
У 3-го компонента Button изменить свойства и метод:
В методе Click кнопки написать код:
int bb = dataGridView1.CurrentCell.RowIndex;
booksBindingSource.Filter = "Code_Author = " + У 4-го компонента Button изменить свойства и метод:
В методе Click кнопки написать код:
int bb = dataGridView1.CurrentCell.RowIndex;
У 5-го компонента Button изменить свойства и метод:
В методе Click кнопки написать код:
18. Аналогично для остальных форм добавить элементы типа Button, которые будут запускать фильтры по соответствующим значениям полей текущей записи в объекте Grid.
19. Проверить работу приложения.
20. Создать форму, назвать FormProcedure.
Рис. 5.1. Пример расположения компонентов на форме FormBooks 21. Добавить на главной форме в меню пункт с названием Работа с процедурами. В методе Click пункта меню написать код для запуска формы FormProcedure (см. пример кода в пункте 9 текущей лабораторной работы).
22. Зайти Tool -> Choose Toolbox Items. Поставить галочки на элементах SqlCommand и SqlConnection, применить изменения.
23. Добавить на форму компонент SqlConnection и в свойстве ConnectionString выбрать DB_DOOK.mdf 24. Теперь можно подключить хранимую процедуру Count_purchases, выполненную в задании 9 лабораторной работы №4. На форму FormProcedure добавить компонент SqlCommand. Изменить следующие его свойства:
25. У компонента SqlCommand1 выбрать свойтсво Parameters и в свойствах каждого входного параметра исправить свойство SqlDbType – на DateTime, а для выходного параметра свойство Value – Int. Также, если параметр со значением ReturnValue (параметр Direction) не создан, то необходимо создать его (он должен быть на самом верху) и задать ему имя @ReturnValue со свойством SqlDbType - Int.
26. На форму FormProcedure добавить 3 компонента типа TextBox (имена соответственно TextBox1, TextBox2, TextBox3) и 1 компонент типа Button. Рядом с каждым компонентом TextBox поставить Label и исправить их свойства Text соответственно на «Количество покупок за указанный период», «Введите дату начала периода», «Введите дату конца периода».
27. На кнопке поменять название на «Выполнить запрос». В методе Click кнопки написать следующий код:
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. Проверить работу приложения.
На Visual C# 2005 создать новый проект, далее для индивидуальной БД, созданной в лабораторной работе №1, создать интерфейс, включающий все функции и процедуры, которые описаны по ходу текущей лабораторной работы.
СОЗДАНИЕ АДМИНИСТРАТИВНОЙ СТРАНИЦЫ
Цель работы – научиться организовывать со стороны клиентского приложения удаленное управление правами доступа к данным БД.Содержание работы:
1. Выполнение всех заданий по ходу лабораторной работы.
2. Выполнение индивидуальных заданий.
Для создания в приложении административной страницы используем пример базы данных c названием DB_Books, которая была создана в лабораторной работе №1, к которой сделано подключение через ODBC драйвер типа системного источника данных и названием DB_BooksDSN, а также используем клиентское приложение, которое было создано по ходу пояснений в лабораторной работе №5. При выполнении примеров и заданий обращайте внимание на соответствие названий БД, таблиц и других объектов проекта.
В Management Studio Создадим процедуру добавления логина в БД DB_Books в разделе Stored Procedures базы данных DB_Books, используя утилиту Management Studio:
CREATE PROCEDURE addlogin1 @login_ char(15), @password1 char(15) exec sp_addlogin @login_,@password1, 'DB_Books' exec sp_adduser @login_,@login_ На Visual C# 1. Создать форму, назвать FormAdmin.
2. Добавить на главной форме в меню пункт с названием Работа с процедурами. В методе Click пункта меню написать код для запуска формы FormAdmin.
3. Зайти Tool -> Choose Toolbox Items. Поставить галочки на элементах SqlCommand и SqlConnection (если таковые отсутсвуют), применить изменения.
4. Добавить на форму компонент SqlConnection и в свойстве ConnectionString выбрать DB_DOOK.mdf 5. Теперь можно подключить хранимую процедуру addlogin1. На форму FormAdmin добавить компонент SqlCommand. Изменить следующие его свойства:
6. У компонента SqlCommand1 выбрать свойтсво Parameters и в свойствах каждого параметра исправить свойство SqlDbType – на Char.
7. На форму FormAdmin добавить 2 компонента типа TextBox (имена соответственно TextBox1, TextBox2) и 1 компонент типа Button. Рядом с компонентами типа TextBox поставить элементы Label, в которых соответственно изменить свойства Text на «Введите имя нового пользователя» и «Введите пароль».
8. На кнопке поменять название на «Выполнить запрос». В методе Click кнопки написать следующий код:
sqlCommand1.Parameters["@login_"].Value = textBox1.Text;
sqlCommand1.Parameters["@password1"].Value = textBox2.Text;
sqlCommand1.ExecuteNonQuery();
MessageBox.Show("Невозможно добавить пользователя!");
Проверить работу приложения.
В Management Studio Создадим процедуру добавления разрешений в БД DB_Books в разделе Stored Procedures базы данных DB_Books:
CREATE PROCEDURE grantlogin @text1 char(250) declare @SQLString nvarchar(250) SET @SQLString = CAST( @text1 AS NVARCHAR(250) ) EXECUTE sp_executesql @SQLString На Visual C# 10. На форму FormAdmin добавить еще один компонент SqlCommand (с именем SqlCommand2). Изменить следующие его свойства:
11. У компонента SqlCommand2 выбрать Parameters и в свойствах каждого параметра исправить свойство SqlDbType – Char.
12. На форме FormAdmin расположить два компонента ComboBox (например, ComboBox1 и ComboBox2). Рядом с компонентами типа ComboBox поставить элементы Label, в которых соответственно изменить свойства Text на «Выберите операцию» и «Выберите пользователя».
13. В список ComboBox1 занести перечень значений:
14. В список ComboBox2 занести перечень значений:
Publishing_house.
15. На форме FormAdmin расположить компонент TextBox (например, TextBox3), один компонент Button. Рядом с компонентом типа TextBox поставить элемент Label, в котором изменить свойства Caption на «Введите имя пользователя, которому назначается привилегия».
16. В методе Click созданной кнопки написать:
sqlCommand2.Parameters["@text1"].Value = “GRANT” + ComboBox1.Text + “ON” + ComboBox2.Text + “TO” + TextBox3.Text;
sqlCommand1.ExecuteNonQuery();
catch (SqlException ex) MessageBox.Show("Невозможно добавление разрешения!");
17. Запустить приложение и проверить работу.
В вашей индивидуальной базе данных, которая была выдана по вариантам (из лабораторной работы №1), создать 4 хранимые процедуры, которые будут выполнять операции по добавлению пользователя, удалению пользователя, добавлению разрешения на одну из таблиц, удалению разрешения на одну из таблиц. В клиентском приложении, которое было создано в лабораторной работе №5 по вашему варианту, добавить на основную форму в меню пункт Администрирование, который будет запускать форму Администрирование. На форме организовать запуск четырех созданных хранимых процедур с передачей данных в процедуры из клиентского приложения. Цель задания создание удаленного управления правами доступа к вашей БД.
СОЗДАНИЕ ОТЧЕТНЫХ ФОРМ В КЛИЕНТСКОМ ПРИЛОЖЕНИИ
Цель работы – научиться создавать формы отчетных документов по данным БД.Содержание работы:
1. Выполнение всех заданий по ходу лабораторной работы.
2. Выполнение индивидуальных заданий.
Для выполнения трех первых заданий используем пример базы данных c названием DB_Books, которая была создана в лабораторной работе №1.
При выполнении примеров и заданий обращайте внимание на соответствие названий БД, таблиц и других объектов проекта.
Отчеты во многом похожи на формы и тоже позволяют получить результаты работы запросов в наглядной форме, но только не на экране, а в виде распечатки на принтере. Таким образом, в результате работы отчета создается бумажный документ.
На Visual C# 2005 есть несколько способов создания отчетов. Один из способов создание отчетов это использование генератора отчета FastReport. Генератор можно скачать с официального сайта компании или же взять дистрибутивы у преподавателя. После установки генератора необходимо перезапустить Visual C# 2005. Затем необходимо добавить компоненты FastReport как это делалось в лаб. работе 5 в пункте 22.
Для создания отчета необходимо поместить компонент Report на главную форму. После этого двойным щелчком нажать на компонент и выбрать данные, которые нам нужны для составления отчета. После этого откроется сам редактор отчетов. Для сохранения изменений нужно просто сохранить файл отчета в любом месте.
Отчеты состоят из разделов или секций (Bands), а разделы могут содержать элементы управления. Для настройки разделов надо нажать на рабочей области на кнопку «Настроить бэнды».
1. Структура отчета состоит из следующих разделов: заголовок отчета, подвал отчета, заголовок страници, подвал страници, область данных, заголовок колонки, подвал колонки, фоновый.
2. Раздел заголовок отчета служит для печати общего заголовка отчета.
3. Раздел заголовок страници можно использовать для печати подзаголовков, если отчет имеет сложную структуру и занимает много страниц.
Здесь можно также помещать и номера страниц, если это не сделано в нижнем колонтитуле.
4. В области данных размещают элементы управления, связанные с содержимым полей таблиц базы. В эти элементы управления выдаются данные из таблиц для печати на принтере. Эти разделы будут на печати воспроизводиться столько раз, сколько записей присутствует в привязанном запросе или таблице.
5. Раздел подвал страници используют для тех же целей, что и раздел заголовок страници. Можно использовать для подстановки полей для подписей должностных лиц, если есть необходимость подписывать отчет на каждой странице.
6. Разделы колонок используют для размещения дополнительной информации или итоговой информации по всем данным отчета. Печатается сверху или снизу области данных.
7. Для предварительного просмотра отчета в том виде, как он будет расположен на бумаге, необходимо вызвать метод Show компонента Report (на главной форме в меню добавить раздел и в методе Click написать этот метод, например Report1.Show()). Пример отчета в режиме «Конструктор» представлен на рис. 7.1, а в режиме предваритеного просмотра – на рис. 7.2.
Рис 7.1. Пример отчета в режиме «Конструктор»
Рис. 7.2. Пример отчета в предварительном просмотре Задание 1. Создание отчета в табличной форме, который выбирает из таблицы Books все поля, кроме кодов, из таблицы Publish_house название издательства и место издательства, из таблицы Authors имя автора.
1. В проекте на главной форме в меню добавить пункт меню Отчеты, а также подпункты:
2. В проекте на главную форму добавить 3 компонента Report 3. У первого компонента Report изменить DataSet (стрелка на компоненте Task -> Select DataSet) на соответствующие данные необходимые для отчета. Открыть окно дизайна отчета (двойным щелчком по компоненту).
4. В свойствах включить такие разделы (настроить бэнды), как заголовок отчета, заголовок данных, данные.
5. В разделе заголовок отчета разместить метку (компонент Текст).
В свойствах изменить его внешний вид и подпись «Пример табличного отчета».
6. В разделе заголовок данных установить компонент Таблица (для имитации обрамления шапки таблицы) и написать в ней - Название книги, Автор, Издательство.
7. На раздел данные перетенуть обьекты с панели данные по следующему пути:
Источники данных -> Books -> title_book Источники данных -> Books -> Autors -> name_autor Источники данных -> Books -> Publishing_house -> publish Расположить компоненты симметрично под надписями в таблице.
8. В главной форме приложения в подпункте Отчет в табличной форме в методе Click написать команду: Report1.Show().
9. Запустить приложение, проверить работу.
Задание 2. Создание отчета в свободной форме с данными из первого задания. Создадим карточку книги для библиотечной картотеки.
Особенность отчета в свободной форме в том, что он создает шаблон на каждую отдельную запись таблицы, другими словами, он создается по документам, у которых нет шапки и примечаний. Примером таких документов может служить приходный или расходный кассовый ордер, этикетка для товара или ценник в магазине, пригласительное письмо и т.д.
1. У второго компонента Report установить свойства DataSet на необходимые. В свойствах (настроить бэнды) включить раздел Данные.
2. На раздел данные перетенуть обьекты с панели данные по следующему пути:
Источники данных -> Books -> title_book Источники данных -> Autors -> name_autor Источники данных -> Publishing_house -> publish 3. В главной форме приложения в подпункте Отчет в свободной форме в методе Click написать команду: Report2.Show().
4. Запустить приложение, проверить работу.
Задание 3. Создание отчета по двум таблицам. Создадим отчет с группировкой, в котором сначала будут выводиться данные автора книги из таблицы Authors, а затем список книг, которые написал этот автор.
1. У третьего компонента Report установить свойства DataSet на необходимые. В свойствах (настроить бэнды) включить разделы: заголовок отчета, данные.
2. В разделе заголовок отчета разместить метку (компонент Текст). В свойствах изменить ее внешний вид и подпись «Отчет по авторам и написанным книгам».
3. Вызвать мастер группировки. Панель Отчёт -> Мастер группировки. В качестве условия группировки указать поле, по которому будет осуществляться группировка данных: Autors -> name_autor. Нажать Добавить.
4. В результате получим бэнды: Заголовок группы (содержит имя автора), Данные, Подвал группы. На раздел данные перетенуть обьекты с панели данные по следующему пути: Источники данных -> Autors -> Books -> title_book. Пример представлен на рис. 7.3.
5. В главной форме приложения в подпункте Отчет с группировкой по двум таблицам в методе Click написать команду: Report3.Show().
6. Запустить приложение, проверить работу.
Варианты заданий к лабораторной работе № По индивидуальной базе данных, которая выдана по вариантам (из лабораторной работы №1) сделать в клиентском приложении четыре отчета, которые будут запускаться через меню главной формы:
- отчет в табличной форме по одному из справочников, причем в разделе «Примечание» вывести итоговое количество записей в отчете;
- отчет в свободной форме. Выберите одну из таблиц, по которой можно сделать или бейдж, или ценник, или пригласительный билет. При создании отчета используйте рисунок в качестве подложки;
- отчет по запросу. Соедините данные всех трех таблиц, кодовые поля в запрос не помещайте. Создайте отчет в табличной форме с итоговым полем в разделе «Примечание» (это может быть сумма или количество и т.п., в зависимости от содержания запросов). Каждая строка в отчете должна иметь номер по порядку. Например (см. фрагмент ниже):
- отчет с группировкой по нескольким таблицам. Выберите одну пару связанных таблиц, определите главную и зависимую таблицы и сделайте отчет в табличной форме, в котором данные из главной таблицы расшифровываются (дополняются) данными из зависимой таблицы.
Цель задания создание единого приложения для ввода/ вывода данных и удаленного управления доступом к БД.
1. Интернет-институт информационных технологий. www.intuit.ru.
Курс «Основы SQL».
2. Мамаев Е.В. Microsoft SQL Server 2000. СПб.: БХВ-Петербург, 2005. 1280 с.
3. Остринская Л.И., Семенова И.И., Дороболюк Т.Б. Теория и практика работы с современными базами и банками данных: Учебное пособие.
Омск: Изд-во СибАДИ, 2005. 250 с.
4. Семенова И.И. SQL стандарт в СУБД MS SQL SERVER, ORACLE, VFP И ACCESS: манипулирование данными. Омск: Изд-во СибАДИ, 2008. 57 с.
5. Шкрыль А.А. Разработка клиент-серверных приложений в Delphi.
СПб.: БХВ-Петербург, 2006. 480 с.
ОБЩИЕ ПОЛОЖЕНИЯ
Лабораторная работа №1
СОЗДАНИЕ БАЗ ДАННЫХ (БД) В MICROSOFT SQL SERVER
Лабораторная работа №2
ИСПОЛЬЗОВАНИЕ ОПЕРАТОРОВ МАНИПУЛИРОВАНИЯ ДАННЫМИ В
MICROSOFT SQL SERVERЛабораторная работа №3
ОСВОЕНИЕ ПРОГРАММИРОВАНИЯ С ПОМОЩЬЮ ВСТРОЕННОГО ЯЗЫКА
TRANSACT SQL В MICROSOFT SQL SERVERЛабораторная работа №4
СОЗДАНИЕ ХРАНИМЫХ ПРОЦЕДУР В MICROSOFT SQL SERVER.................. Лабораторная работа №5
СОЗДАНИЕ КЛИЕНТСКОЙ ЧАСТИ ПРИЛОЖЕНИЯ ДЛЯ ПРОСМОТРА,
РЕДАКТИРОВАНИЯ ДАННЫХ БД. ВЫЗОВ ХРАНИМЫХ ПРОЦЕДУР ИЗ
КЛИЕНТСКОЙ ЧАСТИЛабораторная работа №6
СОЗДАНИЕ АДМИНИСТРАТИВНОЙ СТРАНИЦЫ
Лабораторная работа №7
СОЗДАНИЕ ОТЧЕТНЫХ ФОРМ В КЛИЕНТСКОМ ПРИЛОЖЕНИИ.................. Библиографический список