Как написать программу бд

Создадим базу данных, краткое описание проекта которой — в статье Основы проектирования базы данных — пример.

Для этого понадобится установленная система управления базами данных (СУБД) DB2. Мы будем использовать диалект языка SQL, который используется именно в этой СУБД.

Первая команда, которую мы будем применять для создании базы данных — это команда CREATE DATABASE. Её синтаксис следующий:

CREATE DATABASE ИМЯ_БАЗЫ ДАННЫХ

Далее для создания таблиц нашей базы данных будем многократно использовать команду CREATE TABLE. Её синтаксис следующий:

CREATE TABLE ИМЯ_ТАБЛИЦЫ (имя_первого_столбца тип данных, . имя_последнего_столбца тип данных, первичный ключ, ограничения (не обязательно))

Так как наша база данных моделирует сеть аптек, то в ней есть такие сущности, как «Аптека» (таблица Pharmacy в нашем примере создания базы данных), «Препарат» (таблица Preparation в нашем примере создания базы данных), «Доступность (препаратов в аптеке)» (таблица Availability в нашем примере создания базы данных), «Клиент» (таблица Client в нашем примере создания базы данных) и другие, которые здесь подробно и разберём.

Как создать базу данных MSSQL Server [Базы данных для C# программиста] #1

Разработке модели «сущность-связь» можно посвятить не одну статью, но если нас прежде всего интересуют команды языка SQL для создания базы данных и таблиц в ней, то условимся считать, что связи между сущностями уже нам понятны. На рисунке ниже приведено представление модели нашей базы данных с атрибутами сущностей (таблиц) и связями между таблицами.

Для увеличения рисунка можно нажать на него левой кнопкой мыши.

При создании базы данных, в которой таблицы связаны между собой, важно позаботиться о целостности данных. Это означает, например, что если если удалить препарат из таблицы Preparation, то должны удалиться все записи этого препарата в таблице Availability.

Ещё пример ограничения целостности: нужно установить запрет на удаление названия группы препарата из таблицы Group, если существует хотя бы один препарат этой группы. Особый случай составляет изменение данных в одной таблице, когда производятся действия с данными в другой таблице. Об этом поговорим в конце статьи. Можно также углубиться в теорию на уроке Реляционная модель данных.

Как уже говорилось, в разбираемом здесь примере создания базы данных использовался вариант языка SQL, который используется в системе управления базами данных (СУБД) DB2. Он является регистронезависимым, то есть не имеет значение, набраны ли команды и отдельные слова в них строчными или прописными буквами. Для иллюстрации этой особенности приведены команды без особой системы набранные строчными и прописными буквами.

Теперь приступим к созданию команд. Первая наша команда SQL создаёт базу данных PHARMNETWORK:

Код SQL

CREATE DATABASE PHARMNETWORK

Описание таблицы PHARMACY (Аптека):

Имя поля Тип данных Описание
PH_ID smallint Идентификационный номер аптеки
Address varchar(40) Адрес аптеки

База данных SQLite в Python. Создание БД, вставка в БД | Базовый курс. Программирование на Python

Пишем команду, которая создаёт таблицу PHARMACY (Аптека), значения первичного ключа PH_ID генерируются автоматически от 1 с шагом 1, вносится проверка на то, чтобы значения атрибута Address в этой таблице были уникальными:

Код SQL

CREATE TABLE PHARMACY(PH_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), Address varchar(40) NOT NULL, PRIMARY KEY(PH_ID), CONSTRAINT PH_UNIQ UNIQUE(Address))

Следует обратить внимание на то, что автоматическое генерирование первичного ключа с приращением обеспечено средствами, применяемыми в диалекте SQL для DB2:

Код SQL

PH_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)

Средства автоматического генерирования первичного ключа с приращением (кратко это называется автоинкрементом) в разных диалектах SQL различаются. Так, в MySQL используется ключевое слово AUTO_INCREMENT и соответствующая часть запроса на создание таблицы выглядит следующим образом:

Код SQL

PH_ID int(4) NOT NULL AUTO_INCREMENT

В SQL Server механизм автоинктемента обеспечивается так:

Код SQL

PH_ID int IDENTITY(1, 1) PRIMARY KEY

Запись (1, 1) здесь означает, что значения первичного ключа должны создаваться начиная с 1 с приращением на 1. Итак, помните о том, что в зависимости от СУБД и диалекта SQL механизмы автоинкремента различаются, а далее для краткости будем приводить запросы на создание таблиц в соответствии с синтаксисом для DB2.

Описание таблицы GROUP (Группа препаратов):

Имя поля Тип данных Описание
GR_ID smallint Идентификационный номер группы препаратов
Name varchar(40) Название группы препаратов

Пишем команду, которая создаёт таблицу Group (Группа препаратов), значения первичного ключа GR_ID генерируются автоматически от 1 с шагом 1, проводится проверка уникальности наименования группы (для этого используется ключевое слово CONSTRAINT):

Код SQL

CREATE TABLE GROUP(GR_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), Name varchar(40) NOT NULL, PRIMARY KEY(GR_ID), CONSTRAINT GR_UNIQ UNIQUE(Name))

Описание таблицы PREPARATION (Препарат):

Имя поля Тип данных Описание
PR_ID smallint Идентификационный номер препарата
GR_ID smallint Идентификационный номер группы препарата
Name varchar(40) Название препарата

Команда, которая создаёт таблицу PREPARATION, значения первичного ключа PR_ID генерируются автоматически от 1 с шагом 1, определяется, что значения внешнего ключа GR_ID (Группа препаратов) не могут принимать значение NULL, определена проверка уникальности значений атрибута Name:

Код SQL

CREATE TABLE PREPARATION(PR_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), Name varchar(40) NOT NULL, GR_ID int NOT NULL, PRIMARY KEY(PR_ID), constraint PR_UNIQ UNIQUE(Name))

Далее нам требуется позаботиться об ограничениях целостности. Это очень удобно слелать с помощью команды alter table. Эта команда изучается на уроке SQL ALTER TABLE — изменение таблицы базы данных.

Теперь самое время создать таблицу AVAILABILITY (Доступность или Наличие препарата в аптеке). Её описание:

Имя поля Тип данных Описание
A_ID smallint Идентификационный номер записи о доступности
PH_ID smallint Идентификационный номер аптеки
PR_ID smallint Идентификационный номер препарата
Quantity int Количество доступного препарата
DateStart varchar(20) Дата начала работы аптеки с данным препаратом
DateEnd varchar(20) Дата окончания работы аптеки с данным препаратом
Mart varchar(3) Выставлен ли препарат на витрину

Пишем команду, которая создаёт таблицу AVAILABILITY. Определяются даты начала (не может быть NULL) и окончания (по умолчанию NULL).

Код SQL

CREATE TABLE AVAILABILITY(A_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), PH_ID INT NOT NULL, PR_ID INT NOT NULL, DateStart varchar(20) NOT NULL, DateEnd varchar(20) DEFAULT NULL, QUANTITY INT NOT NULL, MART varchar(3) DEFAULT NULL, PRIMARY KEY(A_ID), CONSTRAINT AVA_UNIQ UNIQUE(PH_ID, PR_ID))

Создаём таблицу DEFICIT (Дефицит препарата в аптеке, то есть, неудовлетворённый запрос). Её описание:

Имя поля Тип данных Описание
D_ID smallint Идентификационный номер записи о дефиците
PH_ID smallint Идентификационный номер аптеки
PR_ID smallint Идентификационный номер препарата
Solution varchar(40) Решение проблемы дефицита
DateStart varchar(20) Дата появления проблемы
DateEnd varchar(20) Дата решения проблемы
Читайте также:
Как выключить компьютер с сохранением открытых программ

Пишем команду, которая создаёт таблицу DEFICIT:

Код SQL

CREATE TABLE DEFICIT(D_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), PH_ID INT NOT NULL, PR_ID INT NOT NULL, Solution varchar(40) NOT NULL, DateStart varchar(20) NOT NULL, DateEnd varchar(20) DEFAULT NULL)

Осталось немного. Мы уже дошли до команды, которая создаёт таблицу Employee (Сотрудник). Её описание:

Имя поля Тип данных Описание
E_ID smallint Идентификационный номер сотрудника
PH_ID smallint Идентификационный номер аптеки
FName varchar(40) Имя сотрудника
LName varchar(40) Фамилия сотрудника
Post varchar(40) Должность

Пишем команду, которая создаёт таблицу Employee (Сотрудник), с первичным ключом, генерируемым по тем же правилам, что и первичные ключи предыдущих таблиц, в которых они существуют. Внешним ключом PH_ID Сотрудник связан с PHARMACY (Аптекой).:

Код SQL

CREATE TABLE EMPLOYEE(E_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), F_Name varchar(40) NOT NULL, L_Name varchar(40) NOT NULL, POST varchar(40) NOT NULL, PH_ID INT NOT NULL, PRIMARY KEY(E_ID))

Очередь дошла до создании таблицы CLIENT (Клиент). Её описание:

Имя поля Тип данных Описание
C_ID smallint Идентификационный номер клиента
FName varchar(40) Имя клиента
LName varchar(40) Фамилия клиента
DateReg varchar(20) Дата регистрации

Пишем команду, создающую таблицу CLIENT (Клиент), в отношении первичного ключа которого справедливо предыдущее описание. Особенность этой таблицы в том, что её атрибуты F_Name и L_Name имеют по умолчанию значение NULL. Это связано с тем, что клиенты могут быть как зарегистрированными, так и незарегистрированными. У последних значения имени и фамилии как раз и будут неопределёнными (то есть NULL):

Код SQL

CREATE TABLE CLIENT(C_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), FName varchar(40) DEFAULT NULL, LName varchar(40) DEFAULT NULL, DateReg varchar(20), PRIMARY KEY(C_ID))

Предпоследняя таблица в нашей базе данных — таблица BASKET (Корзина покупок). Её описание:

Имя поля Тип данных Описание
BS_ID smallint Идентификационный номер корзины покупок
E_ID smallint Идентификационный номер сотрудника, оформившего корзину
C_ID smallint Идентификационный номер клиента

Пишем команду, создающую таблицу BASKET (Корзина покупок), так же с уникальным и инкрементируемым первичным ключом и связанную внешним ключами C_ID и E_ID с Клиентом и Сотрудником соответственно:

Код SQL

CREATE TABLE BASKET(BS_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), C_ID INT NOT NULL, E_ID INT NOT NULL, PRIMARY KEY(BS_ID))

И, наконец, последняя таблица в нашей базе данных — таблица BUYING (покупка). Её описание:

Имя поля Тип данных Описание
B_ID smallint Идентификационный номер покупки
PH_ID smallint Идентификационный номер аптеки
PR_ID smallint Идентификационный номер препарата
BS_ID varchar(40) Идентификационный номер корзины покупок
Price varchar(20) Цена
Date varchar(20) Дата

Пишем команду, создающую таблицу BUYING (покупка), так же с уникальным и инкрементируемым первичным ключом и связанную внешними ключами BS_ID, PH_ID, PR_ID с Корзиной покупок, Аптекой и Препаратом соответственно:

Код SQL

CREATE TABLE BUYING(B_ID smallint NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), BS_ID INT NOT NULL, PH_ID INT NOT NULL, PR_ID INT NOT NULL, DateB varchar(20) NOT NULL, Price Double NOT NULL, PRIMARY KEY(B_ID))

И совсем уже в завершение темы создания базы данных обещанное отступление о соблюдении ограничений целостности, когда решение — более сложное, чем написание команды. В нашем примере необходимо соблюдать следующее условие: при покупке единицы препарата значение количества этого препарата в таблице AVAILABILITY должно соответственно уменьшиться. Вообще говоря, для таких операций в языке SQL существуют особые средства, называемые триггерами. Но триггеры — вещь капризная: на практике они могут и не сработать или сработать не так, как предусмотрено. Поэтому разработчики по возможности ищут программные средства решения таких задач, пример которых упомянут в этом абзаце.

И действительно, есть программное средство решение обозначенной выше задачи уменьшения значения количества препарата. А именно: в условии добавления соответствующего препарата в таблицу BUYING (Покупка) пишется функция на языке программирования, на котором выполнено приложение, с запросом с ключевым словом UPDATE на замену значения количества этого препарата на единицу меньше в той же аптеке. И таблица BUYING, и таблица AVAILABILITY имеют внешний ключ PH_ID — идентификатор определённой аптеки.

На этом многогранная тема создания баз данных прерывается.

Источник: function-x.ru

Создаем базу данных на примере службы доставки и разбираем запросы SQL

Сегодня мы рассмотрим пример базы данных и различные команды агрегации, группировки, сортировки, соединения таблиц и другое на примере MySQL. Сами данные представляют собой набор таблиц с произвольными названиями и значениями. Структура таблиц и их связи представлены ниже.

Для понимания дальнейшего Вам будут желательно начальные знания SQL и баз данных. Данное пособие поможет структурировать информацию, обновить память и может выступать в роли шпаргалки, которую вы можете использовать при надобности. Запросы на создание всех таблиц находятся тут.

Таблица Таблица Таблица Таблица Таблица Таблица

Как ни странно, но начнем мы анализ с таблицы, которая не упоминалась выше и не имеет связей с другими. Она представляет собой статистику за год по некоторым ключевым показателям.

Примечание: дабы не загружать статью всеми видами таблиц из запросов, визуально представлены будут только некоторые, а с остальными Вы без проблем можете поэкспериментировать сами.

Table

Агрегация, группировка, сортировка

Сумма заказов за весь год:

SELECT SUM(amount_of_orders) AS orders_per_year FROM year_statistics;

Убывающая сортировка заказов по месяцам:

SELECT month_name, amount_of_orders
FROM year_statistics
ORDER BY amount_of_orders DESC;

Вывести месяц, где больше всего заказов:

SELECT month_name, amount_of_orders FROM year_statistics
WHERE amount_of_orders = (SELECT MAX(amount_of_orders)
FROM year_statistics);

Популярность районов по количествам клиентов:

SELECT district
FROM customers
GROUP BY district
ORDER BY COUNT(district) DESC;

Сколько каждый курьер доставил заказов:

SELECT courier_id, COUNT(order_id)
From delivery_list
WHERE date_arrived IS NOT NULL
GROUP BY courier_id;

Общие запросы и использование операторов IN, EXISTS, UNION и др.

Выборка клиентов, которые живут в районе «South»:

SELECT * FROM Customers
WHERE district IN (‘South’);

Информация о заказах, которые не были доставлены клиентам:

SELECT * FROM delivery_list
WHERE taken NOT IN (‘Yes’);

Запрос продуктов из меню, которые были заказаны:

SELECT menu_name FROM products
WHERE EXISTS
(SELECT * FROM orders_products
WHERE orders_products.product_id = products.product_id);

Запрос тех продуктов, которые не заказывали:

SELECT menu_name FROM products
WHERE NOT EXISTS
(SELECT * FROM orders_products
WHERE orders_products.product_id = products.product_id);

Получаем общую таблицу с информацией о клиентах и курьеров:

SELECT ‘Customer’ AS category, first_name, last_name, phone_number
FROM customers
UNION
SELECT ‘Employee’ AS category, first_name, last_name, phone_number
FROM courier_info;

INNER, NATURAL, CROSS, LEFT JOIN

Наиболее интересный запрос, который позволяет видеть детали заказа(номер, название блюда, количество и цена). К тому же здесь использован метод ROUND, позволяющий округлять дробные числа:

SELECT orders_products.order_id, products.menu_name, quantity,
ROUND(price*quantity, 2) AS total_price
FROM orders_products
INNER JOIN products ON orders_products.product_id = products.product_id
ORDER BY order_id, quantity;

Еще один довольно любопытный запрос, показывающий детальную информацию по заказам, а также время их доставки:

Читайте также:
Cms программа для видеонаблюдения инструкция на русском языке

SELECT *, SEC_TO_TIME(TIMESTAMPDIFF(second, date_get, date_arrived))
AS time_of_delivery
FROM orders
NATURAL JOIN delivery_list;

Не совсем тривиальный запрос на выборку о том, что каждому курьеру на машине доступен любой район из таблицы клиентов:

SELECT DISTINCT courier_info.courier_id, customers.district
FROM courier_info
CROSS JOIN customers WHERE courier_info.delivery_type = ‘car’
ORDER BY courier_id;

И напоследок запрос на информацию об имени клиента, его мобильном телефоне и номере заказа:

SELECT customers.first_name, customers.last_name,
customers.phone_number, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;

Заключение

По итогу мы с вами разобрали множество полезных запросов на выборку SQL. Были показаны основные и более редкие операции. В сущности не важно, сколько данных в Вашей таблице — десять или тысяча, от этого запросы не поменяются, а всегда будут оставаться такими же. Главное, чтобы был понятен смысл, количество данных играет намного меньшую роль.

Бояться и расстраиваться от того, что у Вас пока не получается получить желаемый запрос, совершенно глупо. Абсолютно нормально, если Вы гуглите, читаете книгу на интересующую тему, а результата так и нет. На это может уходить от десятка минут до целых дней. Мы все люди и одному человеку не под силу знать все.

Наберитесь терпения, спросите у товарищей, на форумах и просто продолжайте искать сами, у Вас все получится! Удачи.

Источник: habr.com

Создание простого приложения для работы с данными с помощью ADO.NET

Область применения:yesVisual StudionoVisual Studio для Mac noVisual Studio Code

Наборы данных и связанные классы — это устаревшие технологии .NET с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти при отключении приложений от базы данных. Они особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешной технологией, мы рекомендуем использовать Entity Framework Core в новых приложениях .NET. Платформа Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей и имеет более простой программный интерфейс.

При создании приложения, которое работает с данными в базе данных, необходимо выполнить такие основные задачи, как определение строк подключения, вставка данных и выполнение хранимых процедур. Следуя этой статье, вы узнаете, как взаимодействовать с базой данных из простого приложения Windows Forms «формы по данным» с помощью Visual C# или Visual Basic и ADO.NET. Все технологии данных .NET, включая наборы данных, LINQ to SQL и Entity Framework, в конечном итоге выполняют действия, которые очень похожи на описанные в этой статье.

В этой статье демонстрируется простой способ быстрого получения данных из базы данных. Если приложению нужно изменять данные нетривиальными способами и обновлять базу данных, следует рассмотреть возможность использования Entity Framework и привязки данных для автоматической синхронизации элементов управления пользовательского интерфейса с изменениями в базовых данных.

С целью упрощения код не включает обработку исключений для выполнения в рабочей среде.

Полный код для этого руководства можно получить в репозитории GitHub документации По Visual Studio на C# и Visual Basic.

Предварительные требования

Для создания приложения вам потребуются следующие компоненты.

  • приведенному.
  • SQL Server Express LocalDB. Если у вас нет SQL Server Express LocalDB, его можно установить на странице загрузки SQL Server.

В этом разделе предполагается, что вы знакомы с основными функциями интегрированной среды разработки Visual Studio и можете создавать Windows Forms приложение, добавлять формы в проект, помещать кнопки и другие элементы управления в формы, задавать свойства элементов управления и кодировать простые события. Если вы не знакомы с этими задачами, прежде чем приступить к работе с этим руководством, рекомендуется выполнить инструкции из руководства Создание приложения Windows Forms в Visual Studio с помощью Visual Basic или Создание приложения Windows Forms в Visual Studio с помощью C#.

Настройка образца базы данных

Создайте образец базы данных, выполнив следующие действия.

  1. В Visual Studio откройте окно Серверная Обозреватель.
  2. Щелкните правой кнопкой мыши подключения к данным и выберите Создать базу данных SQL Server.
  3. В текстовом поле Имя сервера введите (localdb)mssqllocaldb.
  4. В текстовом поле Новое имя базы данных введите Sales и нажмите кнопку ОК. Пустая база данных Sales создается и добавляется в узел Подключения к данным в сервере Обозреватель.
  5. Щелкните правой кнопкой мыши подключение Данные о продажах и выберите Создать запрос. Откроется окно редактора запросов.
  6. Скопируйте скрипт Transact-SQL Sales в буфер обмена.
  7. Вставьте скрипт T-SQL в редактор запросов и нажмите кнопку Выполнить . Через некоторое время запрос завершает выполнение и создаются объекты базы данных. База данных содержит две таблицы: Customer и Orders. Эти таблицы изначально не содержат данных, но вы можете добавить данные при запуске создаваемого приложения. База данных также содержит четыре простые хранимые процедуры.

Создание форм и добавление элементов управления

  1. Создайте проект для приложения Windows Forms и назовите его SimpleDataApp. Visual Studio создает проект и несколько файлов, включая пустую форму Windows Forms с именем Form1.
  2. Добавьте две формы Windows Forms в проект, чтобы он включал три формы, и назначьте им следующие имена:
    • Навигация
    • NewCustomer
    • FillOrCancel
    • Для каждой формы добавьте текстовые поля, кнопки и другие элементы управления, которые отображаются на рисунках ниже. Для каждого элемента управления задайте свойства, указанные в таблицах.

    Примечание Элементы управления «группа» и «надпись» обеспечивают большую ясность, но не используются в коде.

    Форма навигацииДиалоговое окно

    Элементы управления формы навигацииСвойства
    Кнопка Name = btnGoToAdd
    Кнопка Name = btnGoToFillOrCancel
    Кнопка Name = btnExit

    Форма NewCustomer

    Добавление нового клиента и размещение заказа

    Форма FillOrCancel

    заполнение или отмена заказов

    Сохранение строки подключения

    Когда приложение пытается открыть подключение к базе данных, оно должно иметь доступ к строке подключения. Чтобы не вводить строку вручную в каждой форме, сохраните строку в файле App.config проекта и создайте метод, который возвращает строку при вызове метода из любой формы в приложении.

    Строку подключения можно найти, щелкнув правой кнопкой мыши подключение Данные о продажах в Обозреватель сервера и выбрав Свойства. Найдите свойство ConnectionString , а затем нажмите клавиши CTRL+A, CTRL+C , чтобы выбрать и скопировать строку в буфер обмена.

    Снимок экрана строки подключения в Settings.settings

    1. Если вы используете C#, в Обозреватель решений разверните узел Свойства в проекте, а затем откройте файл Settings.settings. Если вы используете Visual Basic, в Обозреватель решений щелкните Показать все файлы, разверните узел Мой проект и откройте файл Settings.settings.
    2. В столбце Имя введите connString .
    3. В списке Тип выберите (Строка подключения).
    4. В списке Область выберите Приложение.
    5. В столбце Значение введите строку подключения (без кавычек), а затем сохраните изменения.

    В реальном приложении строку подключения следует хранить безопасно, как описано в разделе Строки подключения и файлы конфигурации.

    Написание кода для форм

    В этом разделе содержатся краткие сведения о том, что делает каждая форма. Он также предоставляет код, определяющий базовую логику при нажатии кнопки на форме.

    Форма навигации

    Форма навигации открывается при запуске приложения. Кнопка Добавить учетную запись открывает форму NewCustomer. Кнопка Выполнение или отмена заказов открывает форму FillOrCancel. Кнопка Выход закрывает приложение.

    Преобразование формы навигации в начальную форму

    При использовании C# в обозревателе решений откройте файл Program.cs и измените строку Application.Run на следующую: Application.Run(new Navigation());

    Читайте также:
    Часы с программой где мои дети

    Если вы используете Visual Basic, в Обозреватель решений откройте окно Свойства, перейдите на вкладку Приложение, а затем выберите SimpleDataApp.Navigation в списке форм запуска.

    Создание автоматически созданных обработчиков событий

    Дважды щелкните три кнопки в форме навигации, чтобы создать пустые методы обработчика событий. При двойном щелчке кнопок также добавляется автоматически созданный код в файл кода Designer, который позволяет нажатию кнопки вызывать событие.

    Если пропустить действие двойного щелчка в конструкторе и просто скопировать код и вставить его в файлы кода, не забудьте задать для обработчика событий правильный метод. Это можно сделать в окне Свойства . Перейдите на вкладку События (используйте кнопку панели инструментов молнии) и найдите обработчик щелчка .

    Добавление кода для логики формы навигации

    На кодовой странице формы навигации заполните текст метода для обработчиков событий нажатия трех кнопок, как показано в следующем коде.

    /// /// Opens the NewCustomer form as a dialog box, /// which returns focus to the calling form when it is closed. /// private void btnGoToAdd_Click(object sender, EventArgs e) < Form frm = new NewCustomer(); frm.Show(); >/// /// Opens the FillorCancel form as a dialog box. /// private void btnGoToFillOrCancel_Click(object sender, EventArgs e) < Form frm = new FillOrCancel(); frm.ShowDialog(); >/// /// Closes the application (not just the Navigation form). /// private void btnExit_Click(object sender, EventArgs e)
    »’ »’ Opens the NewCustomer form as a dialog box, which returns focus to the calling form when it closes. »’ Private Sub btnGoToAdd_Click(sender As Object, e As EventArgs) Handles btnGoToAdd.Click Dim frm As Form = New NewCustomer() frm.Show() End Sub »’ »’ Opens the FillOrCancel form as a dialog box. »’ Private Sub btnGoToFillOrCancel_Click(sender As Object, e As EventArgs) Handles btnGoToFillOrCancel.Click Dim frm As Form = New FillOrCancel() frm.ShowDialog() End Sub »’ »’ Closes the application (not just the navigation form). »’ Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click Me.Close() End Sub

    Код для этого руководства доступен на C# и Visual Basic. Чтобы переключить язык кода на этой странице с C# на Visual Basic, используйте переключатель языка кода в верхней части страницы справа.

    Форма NewCustomer

    При вводе имени клиента и нажатии кнопки Создать учетную запись форма NewCustomer создает учетную запись клиента и SQL Server возвращает значение IDENTITY в качестве нового идентификатора клиента. Затем можно разместить заказ для новой учетной записи, указав сумму и дату заказа и нажав кнопку Разместить заказ .

    Создание автоматически созданных обработчиков событий

    Создайте пустой обработчик событий Click для каждой кнопки в форме СоздатьНастройка, дважды щелкнув каждую из четырех кнопок. При двойном щелчке кнопок также добавляется автоматически созданный код в файл кода Designer, который позволяет нажатию кнопки вызывать событие.

    Добавление кода для логики формы NewCustomer

    Чтобы завершить логику формы NewCustomer, выполните следующие действия.

    System.Data.SqlClient Принесите пространство имен в область, чтобы вам не нужно было полностью указывать имена его членов.

    using System.Data.SqlClient;
    Imports System.Data.SqlClient

    Добавьте в класс некоторые переменные и вспомогательные методы, как показано в следующем коде.

    // Storage for IDENTITY values returned from database. private int parsedCustomerID; private int orderID; /// /// Verifies that the customer name text box is not empty. /// private bool IsCustomerNameValid() < if (txtCustomerName.Text == «») < MessageBox.Show(«Please enter a name.»); return false; >else < return true; >> /// /// Verifies that a customer ID and order amount have been provided. /// private bool IsOrderDataValid() < // Verify that CustomerID is present. if (txtCustomerID.Text == «») < MessageBox.Show(«Please create customer account before placing order.»); return false; >// Verify that Amount isn’t 0. else if ((numOrderAmount.Value < 1)) < MessageBox.Show(«Please specify an order amount.»); return false; >else < // Order can be submitted. return true; >> /// /// Clears the form data. /// private void ClearForm()
    ‘ Storage for ID values returned from the database.

    Private parsedCustomerID As Integer Private orderID As Integer »’ »’ Verifies that the customer name text box is not empty. »’ Private ReadOnly Property IsCustomerNameValid As Boolean Get If txtCustomerName.Text = «» Then MessageBox.Show(«Please enter a name.») Return False Else Return True End If End Get End Property »’ »’ Verifies the order data is valid. »’ Private Function IsOrderDataValid() As Boolean ‘ Verify that CustomerID is present. If txtCustomerID.Text = «» Then MessageBox.Show(«Please create a customer account before placing order.») Return False ‘ Verify that order amount isn’t 0. ElseIf (numOrderAmount.Value < 1) Then MessageBox.Show(«Please specify an order amount.») Return False Else ‘ Order can be submitted. Return True End If End Function »’ »’ Clears values from controls. »’ Private Sub ClearForm() txtCustomerName.Clear() txtCustomerID.Clear() dtpOrderDate.Value = DateTime.Now numOrderAmount.Value = 0 Me.parsedCustomerID = 0 End Sub

    Заполните текст метода для обработчиков событий нажатия четырех кнопок, как показано в следующем коде.

    Форма FillOrCancel

    Форма FillOrCancel выполняет запрос для возврата заказа при вводе идентификатора заказа, а затем нажмите кнопку Найти заказ . Возвращенная строка отображается в сетке данных только для чтения. Вы можете пометить заказ как отмененный (X), нажав кнопку Отменить заказ , или вы можете пометить заказ как заполненный (F) при нажатии кнопки Заполнить заказ . Если снова нажать кнопку Найти заказ , появится обновленная строка.

    Создание автоматически созданных обработчиков событий

    Создайте пустые обработчики событий Click для четырех кнопок в форме FillOrCancel, дважды щелкнув кнопки. При двойном щелчке кнопок также добавляется автоматически созданный код в файл кода Designer, который позволяет нажатию кнопки вызывать событие.

    Добавление кода для логики формы FillOrCancel

    Чтобы выполнить логику формы FillOrCancel, выполните следующие действия.

    Принесите следующие два пространства имен в область, чтобы вам не нужно было полностью указывать имена их участников.

    using System.Data.SqlClient; using System.Text.RegularExpressions;
    Imports System.Data.SqlClient Imports System.Text.RegularExpressions

    Добавьте переменную и вспомогательный метод в класс , как показано в следующем коде.

    ‘ Storage for OrderID. Private parsedOrderID As Integer »’ »’ Verifies that OrderID is valid. »’ Private Function IsOrderIDValid() As Boolean ‘ Check for input in the Order ID text box. If txtOrderID.Text = «» Then MessageBox.Show(«Please specify the Order ID.») Return False ‘ Check for characters other than integers. ElseIf Regex.IsMatch(txtOrderID.Text, «^D*$») Then ‘ Show message and clear input. MessageBox.Show(«Please specify integers only.») txtOrderID.Clear() Return False Else ‘ Convert the text in the text box to an integer to send to the database. parsedOrderID = Int32.Parse(txtOrderID.Text) Return True End If End Function

    Заполните текст метода для обработчиков событий нажатия четырех кнопок, как показано в следующем коде.

    Тестирование приложения

    Запустите приложение и попробуйте создать несколько клиентов и заказов, чтобы убедиться, что все работает должным образом. Чтобы убедиться, что база данных обновлена с учетом внесенных изменений, откройте узел Таблицы в Обозреватель сервера, щелкните правой кнопкой мыши узлы Клиенты и Заказы и выберите пункт Показать данные таблицы.

    См. также

    Источник: learn.microsoft.com

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru