close

Вход

Забыли?

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

?

отчет по практике(9)

код для вставкиСкачать
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
"Ижевский государственный технический университет имени М.Т. Калашникова"
Факультет "Математика и естественные науки"
Кафедра "Прикладная математика и информатика"
ОТЧЁТ
ПО ПРОИЗВОДСТВЕННОЙ ПРАКТИКЕ
на специальности 230401 - прикладная математика
Место прохождения практики:
ОАО "Ижевский радиозавод", отдел 456.
Выполнил:
студент группы 6-01-3А.И. ТазмиеваРуководитель практики от предприятия:
инженер-программистР.М. ФатиховРуководители практики от университета:к.т.н., профессорН.И. Калядинст. преподавательТ.М. СпичкинаЗаведующий кафедрой:
к.ф.-м.н., доцентА.А. Айзикович
Ижевск 2012
ОГЛАВЛЕНИЕ
Задание от предприятия ....................................................................................... 3
Введение............................................................................................................ 4
Глава1
Программирование на SQL ................................................................................... 5
Программирование на C# ...................................................................................... 6
Программирование на ADO.NET............................................................................. 7 Примеры написания команд в SQL .......................................................................... 8
Глава 2
Ход выполнения работы .................................................................................... 10
Заключение ........................................................................ ..............................16
Список литературы ............................................................................................. 17
Приложение 1 ...................................................................................................18
Приложение 2 .................................................................................................. 20
Приложение 3................................................................................................... 26
Задание от предприятия
Ознакомиться с языками программирования SQL Server 2008, C#, платформой .NET Framework и технологией ADO.NET с целью создания приложения, которое осуществляет взаимодействие с базой данных на основе двухзвенной архитектуры в Windows Form Application.
Введение
На ОАО "ИРЗ" используется система АСУ "Курьер", которая позволяет отправлять сообщения пользователям. Разработанное приложение работает с базой данных SQL Server 2008 на основе двухзвенной архитектуры и позволяет указывать список пользователей, которым будет отправлено сообщение в случае возникновения ошибок в базе данных.
Глава 1.
I. Программирование на SQL.
1. Введение в SQL.
Одной из основных задач, стоящих перед системами управления базами данных, является необходимость предоставления пользователям удобных методов доступа к данным. Эта задача может быть решена путем использования языков, специально ориентированных на работу с данными. Одним из таких языков является структурированный язык запросов SQL (Structured Query Language). Язык SQL представляет собой набор команд, с помощью которых пользователи и приложения могут получать доступ к данным, хранящимся в системе управления базами данных (СУБД), и выполнять с ними различные операции. Язык SQL предоставляет команды, позволяющие решать следующие задачи:
1) Выборка данных;
2) Добавление, удаление и изменение строк таблиц;
3) Контроль доступа к базе данных и ее объектам;
4) Гарантирование целостности и согласованности базы данных.
2. Подразделы SQL.
По стандарту ANSI команды SQL объединены по группам. Эти группы команд SQL называются подразделами. Список подразделов:
* Язык определения данных (Data Definition Language, DDL). В эту группу входят команды, предназначенные для создания, модификации и удаления объектов баз данных, таких как таблицы и представления. К командам DDL так же относятся и команды управления доступом пользователей к объектам базы данных. Несколько популярных команд DDL:
- CREATE TABLE, DROP TABLE, ALTER TABLE;
- CREATE VIEW, DROP VIEW, ALTER VIEW;
* Язык манипулирования данными (Data Manipulator Language , DML). Эта группа содержит команды, используемые для манипулирования данными в таблицах и представлениях. Иначе говоря, с помощью команд DML выполняется выборка данных, вставка новых строк, изменение и удаление уже существующих.
К командам DML относятся следующие команды:
- SELECT - выбрать строки из таблиц;
- INSERT - добавить строки в таблицу;
- UPDATE - изменить строки в таблице;
- DELETE - удалить строки в таблице. II. Программирование на C#.
Введение в C# и .NET Framework.
C# - безопасный, современный, объектно-ориентированный, нацеленный на Интернет, высокопроизводительный язык для работы на платформе .NET.
Данный язык нужно изучать специально для того, чтобы создавать .NET- приложения, в противном случае сама цель языка была бы утрачена.
По своей сути платформа .NET является новой структурой создания программного продукта, которая предоставляет прикладной программный интерфейс (API) к своим службам, а также API-интерфейсы классических операционных систем Windows.
В платформу входят следующие группы программных продуктов:
* Набор языков, куда входят C# и Visual Basic .NET; набор инструментальных средств разработки, в том числе Visual Studio .NET; обширная библиотека классов для построения веб-служб и приложений, работающих в Windows и Интернете; а также среда выполнения программ CLR (Common Language Runtime, общеязыковая среда выполнения), в которой выполняются объекты, построенные на этой платформе.
* Набор серверов .NET Enterprise Servers, ранее известных под именами SQL Server 2000, Exchange 2000, BizTalk 2000 и др., которые представляют специализированные функциональные возможности для обращения к реляционным базам данных, использования электронной почты и т.д.
Платформа .NET Framework является надстройкой над операционной системой, в качестве которой может выступать любая версия Windows, и состоит из ряда компонентов, таких как:
1. Четыре официальных языка: C#, VB.NET, Managed C++ (управляемый С++ ) и Jscript.NET.
2. Объектно-ориентированную среду CLR, совместно используемую этими языками для создания приложений под Windows и для Интернета.
3. Ряд связных между собой библиотек классов под общим именем FCL (Framework Class Library).
III. Программирование на ADO.NET.
ADO- это набор библиотек, поставляемый с Microsoft .NET Framework и предназначенный для взаимодействия с различными хранилищами данных из .NET - приложений. Библиотеки ADO.NET включают классы, которые служат для подсоединения к источнику данных, выполнения запросов и обработки результатов.
Подсоединенные объекты.
Объектная модель ADO.NET включает классы, предназначенные для непосредственного взаимодействия с источником данных. Большинство из них предоставляют базовые концепции доступа к данным, например физическое соединение с БД, запрос и результаты запроса.
> Класс Connection
Класс Connection предоставляет соединение с источником данных. С помощью свойств этого объекта можно задать тип источника, его расположение и некоторые другие атрибуты. Объект Connection выступает в качестве канала, по которому другие классы взаимодействуют с БД для передачи изменений и выборки их результатов.
> Класс Command
Объекты Command осуществляют запрос к БД, вызов хранимой процедуры или прямой запрос на возврат содержимого конкретной таблицы. Объекты, составляющие отсоединенную часть модели ADO.NET, не взаимодействуют напрямую с подсоединенными объектами.
> Класс DataAdapter
Класс DataAdapter - это своеобразный мост между БД и отсоединенными объектами модели ADO.NET. Метод DataAdapter Fill предоставляет эффективный механизм выборки и переноса результатов запроса в объект DataSet или DataTable для последующей автономной работы с ними.
Отсоединенные объекты.
Объекты, составляющие отсоединенную часть модели ADO.NET, не взаимодействуют напрямую с подсоединенными объектами. В этом состоит их отличие от предыдущих объектных моделей доступа к данным Microsoft.
> Класс DataTable
Класс DataTable ADO.NET позволяет просматривать данные в виде наборов записей и столбцов. Чтобы поместить результаты запроса в объект DataTable, применяют метод DataAdapter Fill. > Класс DataColumn
Объект DataColumn соответствует столбцу таблицы. Однако он содержит не данные, хранящиеся в объекте DataTable, а информацию о структуре столбца.
> Класс DataRow
Обратиться к реальным значениям, хранящимся в объекте DataTable, позволяет набор Rows, содержащий объекты DataRow. > Класс DataSet
DataSet содержит набор данных. Его можно рассматривать в качестве контейнера объектов DataTable (хранящихся в наборе Tables объекта DataSet).
IV. Примеры написания команд в SQL. Рассмотрим несколько примеров применения основных команд. Команда SELECT. Она позволяет выбирать строки из таблицы:
SELECT * FROM dbo.m016t_EventToSendMessage,
где команда FROM определяет источники данных, с которыми будет работать запрос. При указании * , как результат выполнения запроса, сервер возвращает все поля в таблице.
Если же нужно вернуть определенное поле, то * заменяется названием этого поля:
SELECT Description FROM dbo.m016t_EventToSendMessage Команда INSERT, как уже говорилось ранее, добавляет строки в таблицу: INSERT INTO dbo.m016t_EventToSendMessage VALUES('Ошибка доступа'), где команда INSERT INTO, означает, что результат выполнения запроса будет сохранен в таблицу в виде добавления новой строки.
Следующая команда DELETE, создана для удаления строк в таблице.
DELETE FROM dbo.m016t_LoginToSendMessage
WHERE IdEvent = @IdEvent, где команда WHERE позволяет сузить набор строк, включаемых в результат выборки.
Команда UPDATE позволяет изменять данные на уровне отдельного столбца:
UPDATE dbo.m016t_EventToSendMessage
SET description = @description
WHERE IdEvent = @IdEvent,
где команда SET позволяет присвоить переменной конкретное значение. Если в конструкции не указать условие WHERE, то изменение данных пройдет по всему столбцу.
Глава 2.
Ход выполнения работы.
Для создания приложения была разработана архитектура базы данных, состоящая из двух таблиц: dbo.m016t_LoginToSendMessage (пользователи) и dbo.m016t_EventToSendMessage (события).
Таблица реляционной базы данных состоит из строк, каждая из которых представляет одну запись. Строки содержат поля, соответствующие столбцам таблицы, причем строки одной таблицы имеют одинаковую структуру полей. Напрмер, таблица dbo.m016t_EventToSendMessage имеет столбцы IdEvent и Description, а таблица dbo.m016t_LoginToSendMessage - IdRow, IdEvent, Login и SendMsg.
Каждому событию должен соответствовать список пользователей, которым будет отослано сообщение об ошибке в базе данных.
> Подключение к БД.
Для создания СУБД- приложения нужно подключиться к источнику данных, чтобы иметь возможность управлять им. В объектной модели ADO.NET соединение с источником данных обеспечивает объект SqlConnection. Все классы подключения в ADO.NET наследуются от класса SqlConnection в пространстве имен System.Data. SQLClient.
В Приложении 2 приведен код, в котором использована конструкция для ссылки на пространство имен System.Data.SQLClient. Следующая строка кода обязательно должна быть в коде модулей:
using System.Data.SqlClient;
> Создание объекта SqlConnection
Объекты SqlConntction можно создать при инициализации приложения с помощью конструктора, параметром которого является строка подключения.
string connectionString = "server=dbprov;initial catalog=TMC;uid=12345;pwd=12345";
SqlConnection myConnection1 = new SqlConnection(connectionString);
myConnection1.Open(); ,
где метод Open позволяет подключиться к источнику данных.
> Создание объекта DataAdapter.
Для того, чтобы создать объект DataAdapter необходимо реализовать следующие объекты, которые взаимосвязаны с DataAdapter:
DataSet myDataSet = new DataSet(); //хранит список таблиц
SqlCommand myCommand = new SqlCommand(); //команда выполнения запроса
SqlDataAdapter DataAdapter = new SqlDataAdapter();
Имея объект DataAdapter, можно приступать к заполнению объекта DataSet информацией, полученной с помощью SQL- команды select:
DataAdapter.Fill(myDataSet);
Объект DataSet готов. К нему можно обращаться с запросами и выполнять с его данными самые разные операции.
Строки, полученные с помощью команды языка SQL, можно прочитать из таблицы и добавить в окно списка:
foreach (DataRow rows in myDataTable.Rows)
{
cbItemsRows.Items.Add(rows["IdEvent"] + "(" + rows["Description"] + ")");
}
В этом фрагменте программы список заполняется названиями событий с их уникальными номерами. Эта информация берется из таблицы, полученной из базы данных по SQL запросу.
> Заполнение элемента управления DataGrid
Модель ADO.NET предоставляет хорошую поддержку объектам с привязкой данных. Так называются объекты, которые можно связать с конкретным набором данных, полученным от базы данных с помощью модели ADO.NET.
Один из примеров элемента управления , связанного с данными, является элемент управления DataGrid, предоставляемый средой Windows Forms. Как и прежде, в начале создадим объект DataSet, а затем заполним его информацией из таблиц dbo.m016t_EventToSendMessage и dbo.m016t_LoginToSendMessage базы данных, выбрав необходимые поля. Эта таблица будет привязана к элементу управления DataGrid.
По умолчанию, среда Visual Studio.NET даст этому элементу имя dataGridView1. Удобнее будет переименовать его в dataGridViewLoginEvent. После того как набор записей будет создан и заполнен, объект DataGrid привязывается к нему через свойство DataSourse: dataGridViewLoginEvent.DataSource= myDataSet.Tables["dbo.m016t_LoginToSendMessage"].DefaultView;
Следующий участок кода показывает, как объекту dataGridView1 присваиваются данные из объекта DataSet:
public SqlConnection myConnection;
public DataTable myDataTable; DataSet myDataSet = new DataSet();
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = ""SELECT p.Login, t.Description, p.SendMsg FROM dbo.m016t_LoginToSendMessage p JOIN dbo.m016t_EventToSendMessage t ON t.IdEvent= p.IdEvent";";
SqlDataAdapter DataAdapter = new SqlDataAdapter();
DataAdapter.SelectCommand = myCommand;
DataAdapter.TableMappings.Add("Table", "dbo.m016t_LoginToSendMessage");
DataAdapter.Fill(myDataSet);
dataGridViewLoginEvent.DataSource = myDataSet.Tables["dbo.m016t_LoginToSendMessage"].DefaultView;
На выходе мы получаем следующий вид (рис. 1):
(рис. 1)
> Изменение записей в базе данных
До сих пор выполнялось лишь чтение информации, но никакие действия с записями не производились. С помощью модели ADO.NET можно добавлять записи в таблицу, изменять в ней существующие записи, а также удалять их.
На рис.2 изображена форма для работы с моделью ADO.NET. :
(рис. 2)
Рассмотрим левую часть формы (рис. 3):
(рис. 3)
Она состоит из кнопки для добавления записи (btnInsertEvent) , связанного с ней текстового поля (tbInsertEvent), кнопки для удаления записи (btnDeleteEvent), связанного с ней выпадающего списка (cbItemsRows), кнопки для изменения записи (btnUpdateEvent), связанного с ней текстового поля (tbUpdateEvent) и выпадающего списка (cbItemsRows2), кнопки обновления значений в таблице (btnRefreshEvent), элемента управления (dataGridViewEvent). В форме присутствуют еще три текстовых поля: lblInsertEvent, соответствующее кнопке Добавить, lblDeleteEvent, соответствующее кнопке Удалить и lblUpdateEvent, соответствующее кнопке Изменить.
Рассмотрим правую часть формы (рис. 4):
(рис. 4)
Аналогично левой части, она состоит из кнопки для добавления записи (btnInsertLogin), связанных с ней двух выпадающих списков (cbEvents и cbLogin), флажка об отправке сообщений (cbSend), кнопки для удаления записи (btnDeleteLogin), связанных с ней текстового поля (tbDeleteLogin) и выпадающего списка (cbLogin2), кнопки для изменения записи (btnUpdateLogin), связанных с ней текстового поля (tbUpdateLogin) и выпадающего списка (cbUpdateLogin), кнопки обновления значений в таблице (btnRefreshLogin) и элемента управления (dataGridViewLoginEvent). В форме присутствуют еще три текстовых поля: lblInsertLogin, соответствующее кнопке Добавить, lblDeleteLogin соответствующее кнопке Удалить и lblUpdateLogin соответствующее кнопке Изменить.
> Создание новых записей
Рассмотрим левую часть формы. В ней для создания новой записи пользователь должен заполнить поле и нажать Insert Event. string connectionString = "server=dbprov;initial catalog=TMC;uid=as_outmc;pwd=as_outmc"; // подключение к серверу
SqlConnection myConnection = new SqlConnection(connectionString);
myConnection.Open(); //открытие подключения
SqlCommand myCommand = new SqlCommand(); // создание SqlCommand
myCommand.Connection = myConnection; //передача объекта Connection
myCommand.CommandText = "exec dbo.m016p_Insertevent '" + tbInsertEvent.Text + "'"; // передача текста команды
myCommand.ExecuteNonQuery();
> Удаление записей
DataRow targetRow = myDataTable.Rows[cbItemsRows.SelectedIndex]; //получение выделенной строки
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "exec dbo.m016p_DELETEevent " + targetRow["IdEvent"];
myCommand.ExecuteNonQuery();
targetRow.Delete(); //удаление > Обновление записи
Для обновления записи в форме, необходимо выбрать из выпадающего списка нужную строку и ввести в текстовое окно новую запись. После щелчка по кнопке Обновить запись будет изменена и сохранена в базе данных.
DataRow targetRow = myDataTable.Rows[cbItemsRows.SelectedIndex]; //получение выделенной строки
targetRow.BeginEdit(); //перевод строки в режим редактирования
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "exec dbo.m016p_UPDATEevent " + targetRow["IdEvent"] + ", '" + tbUpdateEvent.Text + "'"; //редактирование поля IdEvent ,которому присваивается текст из элемента tbUpdateEvent.
myCommand.ExecuteNonQuery();
targetRow.EndEdit();
Заключение В ходе прохождения практики были изучены основные команды, функции и процедуры языка SQL, возможности SQL запросов, основы языка C# и платформы .NET Framework. Для работы с двухзвенной архитектурой была изучена технология ADO.NET, на основе которой, было создано приложение, которое осуществляет взаимодействие с базой данных в Windows Form Application.
Список литературы
1. Шкарина Л. Язык SQL: учебный курс. СПб. : Питер, 2001. 592 с.
2. Либерти Д., Программирование на С#. - Пер. с англ.- СПб. : Символ, 2003. 688 с.
3. Сеппа Д. Программирование на Microsoft ADO.NET 2.0. Мастер класс. - Пер. с англ.- М. : Русская редакция, СПб.: Питер, 2007. 784 с.
Приложение 1
Листинг программы на SQL Server
SELECT *
FROM dbo.m016t_EventToSendMessage
alter PROC dbo.m016p_Insertevent
@description varchar (1000)
AS
if NOT EXISTS (SELECT * FROM dbo.m016t_EventToSendMessage WHERE description=@description)
INSERT INTO dbo.m016t_EventToSendMessage VALUES(@description)
ELSE PRINT 'данное событие уже существует'
EXEC dbo.m016p_Insertevent 'Угроза безопасности'
alter PROC dbo.m016p_UPDATEevent (@IdEvent INT, @description varchar (1000) )
AS UPDATE dbo.m016t_EventToSendMessage
SET description = @description
WHERE IdEvent = @IdEvent
EXEC dbo.m016p_UPDATEevent 8, 'Ошибка доступа'
alter PROC dbo.m016p_DELETEevent (@IdEvent INT )
AS
DELETE FROM dbo.m016t_LoginToSendMessage
WHERE IdEvent = @IdEvent
DELETE FROM dbo.m016t_EventToSendMessage
WHERE IdEvent = @IdEvent
EXEC dbo.m016p_DELETEevent 4
SELECT *
FROM dbo.m016t_LoginToSendMessage
ALTER PROC dbo.m016p_InsertLogin
@login CHAR(10),
@SendMsg bit,
@IdEvent int
AS
if EXISTS (SELECT * FROM dbo.m016t_EventToSendMessage WHERE IdEvent=@IdEvent)
INSERT INTO dbo.m016t_LoginToSendMessage VALUES(@login, @IdEvent, @SendMsg)
ELSE PRINT 'Данный IdEvent не существует'
EXEC dbo.m016p_InsertLogin '456143', 0, 68
alter PROC dbo.m016p_UPDATELogin (@IdRow INT, @login CHAR(10),@IdEvent int , @SendMsg bit )
AS if EXISTS (SELECT * FROM dbo.m016t_EventToSendMessage WHERE IdEvent=@IdEvent)
UPDATE m016t_LoginToSendMessage SET login=@login,
SendMsg=@SendMsg
WHERE IdRow = @IdRow
ELSE PRINT 'Данный IdEvent не существует'
EXEC dbo.m016p_UPDATELogin 2, '456213', 69, 0
create PROC dbo.m016p_DELETELogin (@IdRow INT )
AS
DELETE FROM dbo.m016t_LoginToSendMessage
WHERE IdRow = @IdRow
EXEC dbo.m016p_DELETELogin 7
SELECT p.Login, t.Description, p.SendMsg
FROM dbo.m016t_LoginToSendMessage p
JOIN dbo.m016t_EventToSendMessage t ON t.IdEvent= p.IdEvent
Приложение 2
Листинг программы на C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormApplication
{
public partial class Form1 : Form
{
public SqlConnection myConnection;
public DataTable myDataTable; private void tab1()
{
DataSet myDataSet = new DataSet();
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "SELECT Description FROM dbo.m016t_EventToSendMessage";
SqlDataAdapter DataAdapter = new SqlDataAdapter();
DataAdapter.SelectCommand = myCommand;
DataAdapter.TableMappings.Add("Table", "dbo.m016t_EventToSendMessage");
DataAdapter.Fill(myDataSet);
dataGridViewEvent.DataSource = myDataSet.Tables["dbo.m016t_EventToSendMessage"].DefaultView;
}
private void tab2()
{
DataSet myDataSet = new DataSet();
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "SELECT p.Login, t.Description, p.SendMsg FROM dbo.m016t_LoginToSendMessage p JOIN dbo.m016t_EventToSendMessage t ON t.IdEvent= p.IdEvent";
SqlDataAdapter DataAdapter = new SqlDataAdapter();
DataAdapter.SelectCommand = myCommand;
DataAdapter.TableMappings.Add("Table", "dbo.m016t_LoginToSendMessage");
DataAdapter.Fill(myDataSet);
dataGridViewLoginEvent.DataSource = myDataSet.Tables["dbo.m016t_LoginToSendMessage"].DefaultView;
}
//Констуктор
public Form1()
{
InitializeComponent();
string connectionString = "server=dbprov;initial catalog=TMC;uid=as_outmc;pwd=as_outmc";
SqlConnection myConnection1 = new SqlConnection(connectionString);
myConnection1.Open();
this.myConnection = myConnection1;
tab2();
tab1();
// выпадающий список. события (первое окно) DataSet myDataSet = new DataSet();
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "SELECT * FROM dbo.m016t_EventToSendMessage";
SqlDataAdapter DataAdapter = new SqlDataAdapter();
DataAdapter.SelectCommand = myCommand;
DataAdapter.TableMappings.Add("Table", "dbo.m016t_EventToSendMessage");
DataAdapter.Fill(myDataSet);
this.myDataTable = myDataSet.Tables[0];
foreach (DataRow rows in myDataTable.Rows)
{
cbItemsRows2.Items.Add(rows["Description"]);
}
// выпадающий список 2. события + IdEvent (первое окно) DataSet myDataSetz = new DataSet();
SqlCommand myCommandz = new SqlCommand();
myCommandz.Connection = myConnection;
myCommandz.CommandText = "SELECT * FROM dbo.m016t_EventToSendMessage";
SqlDataAdapter DataAdapterz = new SqlDataAdapter();
DataAdapterz.SelectCommand = myCommand;
DataAdapterz.TableMappings.Add("Table", "dbo.m016t_EventToSendMessage");
DataAdapterz.Fill(myDataSetz);
this.myDataTable = myDataSetz.Tables[0];
foreach (DataRow rows in myDataTable.Rows)
{
cbItemsRows.Items.Add(rows["IdEvent"] + "(" + rows["Description"] + ")");
}
// выпадающий список с логинами (второе окно)
DataSet myDataSetA = new DataSet();
SqlCommand myCommandA = new SqlCommand();
myCommandA.Connection = myConnection;
myCommandA.CommandText = "SELECT Login FROM dbo.m016t_LoginToSendMessage";
SqlDataAdapter DataAdapterA = new SqlDataAdapter();
DataAdapterA.SelectCommand = myCommandA;
DataAdapterA.TableMappings.Add("Table", "dbo.m016t_LoginToSendMessage");
DataAdapterA.Fill(myDataSetA);
this.myDataTable = myDataSetA.Tables[0];
foreach (DataRow rows in myDataTable.Rows)
{
cbLogin.Items.Add(rows["Login"]) ;
}
// выпадающий список с логинами 2 (второе окно)
DataSet myDataSetC = new DataSet();
SqlCommand myCommandC = new SqlCommand();
myCommandC.Connection = myConnection;
myCommandC.CommandText = "SELECT Login FROM dbo.m016t_LoginToSendMessage";
SqlDataAdapter DataAdapterC = new SqlDataAdapter();
DataAdapterC.SelectCommand = myCommandC;
DataAdapterC.TableMappings.Add("Table", "dbo.m016t_LoginToSendMessage");
DataAdapterC.Fill(myDataSetC);
this.myDataTable = myDataSetA.Tables[0];
foreach (DataRow rows in myDataTable.Rows)
{
cbLogin2.Items.Add(rows["Login"]);
}
// выпадающий список с событиями (второе окно)
DataSet myDataSetB = new DataSet();
SqlCommand myCommandB = new SqlCommand();
myCommandB.Connection = myConnection;
myCommandB.CommandText = "SELECT Description FROM dbo.m016t_EventToSendMessage";
SqlDataAdapter DataAdapterB = new SqlDataAdapter();
DataAdapterB.SelectCommand = myCommandB;
DataAdapterB.TableMappings.Add("Table", "dbo.m016t_EventToSendMessage");
DataAdapterB.Fill(myDataSetB);
this.myDataTable = myDataSetB.Tables[0];
foreach (DataRow rows in myDataTable.Rows)
{
cbEvents.Items.Add(rows["Description"]);
}
}
// добавление в первое окно
private void btnInsertEvent_Click_1(object sender, EventArgs e)
{
string connectionString = "server=dbprov;initial catalog=TMC;uid=as_outmc;pwd=as_outmc";
SqlConnection myConnection = new SqlConnection(connectionString);
myConnection.Open();
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "exec dbo.m016p_Insertevent '" + tbInsertEvent.Text + "'";
myCommand.ExecuteNonQuery();
}
// удаление из первого окна
private void btnDeleteEvent_Click(object sender, EventArgs e)
{ DataRow targetRow = myDataTable.Rows[cbItemsRows.SelectedIndex];
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "exec dbo.m016p_DELETEevent " + targetRow["IdEvent"];
myCommand.ExecuteNonQuery();
targetRow.Delete();
}
// изменение записи в первом окне private void btnUpdateEvent_Click(object sender, EventArgs e)
{
DataRow targetRow = myDataTable.Rows[cbItemsRows.SelectedIndex];
targetRow.BeginEdit();
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "exec dbo.m016p_UPDATEevent " + targetRow["IdEvent"] + ", '" + tbUpdateEvent.Text + "'";
myCommand.ExecuteNonQuery();
targetRow.EndEdit();
}
// обновление таблицы в первом окне
private void btnRefreshEvent_Click(object sender, EventArgs e)
{
tab1();
}
// добавление во второе окно private void btnInsertLogin_Click(object sender, EventArgs e)
{
int SendMSG;
SendMSG = 0;
if ( checkBox1.Checked)
SendMSG=1;
else SendMSG=0;
SqlCommand myCommandA = new SqlCommand();
myCommandA.Connection = myConnection;
myCommandA.CommandText = "exec dbo.m016p_InsertLogin " + cbLogin.Text + "," + Convert.ToString(SendMSG) + "," + cbEvents.SelectedIndex;
myCommandA.ExecuteNonQuery();
}
// удаление из второго окна private void btnDeleteLogin_Click(object sender, EventArgs e)
{
DataRow targetRow = myDataTable.Rows[cbLogin.SelectedIndex];
SqlCommand myCommandB = new SqlCommand();
myCommandB.Connection = myConnection;
myCommandB.CommandText = "exec dbo.m016p_DELETELogin '" + cbLogin2.Text + "'";
myCommandB.ExecuteNonQuery();
targetRow.Delete();
}
// изменение записи во втором окне
private void btnUpdateLogin_Click(object sender, EventArgs e)
{
int SendMSG;
SendMSG = 0;
if (checkBox1.Checked)
SendMSG = 1;
else SendMSG = 0;
DataRow targetRow = myDataTable.Rows[cbItemsRows.SelectedIndex];
targetRow.BeginEdit();
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "exec dbo.m016p_UPDATELogin " + targetRow["IdEvent"] + ", '" + tbUpdateLogin1.Text + "' ," + Convert.ToString(SendMSG) + ", '" + tbUpdateLogin.Text + "'";
myCommand.ExecuteNonQuery();
targetRow.EndEdit();
}
// обновление таблицы во втором окне
private void btnRefreshLogin_Click(object sender, EventArgs e)
{
tab2();
}
private void cbEvents_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbEvents.Text == "") btnInsertLogin.Enabled = false;
else btnInsertLogin.Enabled = true;
}
private void cbItemsRows_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbItemsRows.Text == "")
btnDeleteEvent.Enabled = false;
else btnDeleteEvent.Enabled = true;
}
private void tbUpdateEvent_TextChanged(object sender, EventArgs e)
{
if (tbUpdateEvent.Text == "")
btnUpdateEvent.Enabled = false;
else btnUpdateEvent.Enabled = true;
}
private void cbLogin_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbLogin.Text == "")
btnInsertLogin.Enabled = false;
else btnInsertLogin.Enabled = true;
}
private void tbInsertEvent_TextChanged(object sender, EventArgs e)
{
if (tbInsertEvent.Text == "")
btnInsertEvent.Enabled = false;
else btnInsertEvent.Enabled = true;
}
private void tbUpdateLogin1_TextChanged(object sender, EventArgs e)
{
if (tbUpdateLogin1.Text == "")
btnUpdateLogin.Enabled = false;
else btnUpdateLogin.Enabled = true;
}
private void tbUpdateLogin2_TextChanged(object sender, EventArgs e)
{
if (tbUpdateLogin.Text == "")
btnUpdateLogin.Enabled = false;
else btnUpdateLogin.Enabled = true;
}
private void cbLogin2_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbLogin2.Text == "")
btnDeleteLogin.Enabled = false;
else btnDeleteLogin.Enabled = true;
}
private void label2_Click(object sender, EventArgs e)
}
}
Приложение 3
(рис. 1 )
(рис. 2 )
(рис. 3 )
(рис. 4)
2
Документ
Категория
Разное
Просмотров
363
Размер файла
746 Кб
Теги
преддипломная практика, практике, производственная практика, отчет, практика
1/--страниц
Пожаловаться на содержимое документа