Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Асинхронные приложения баз данных в клиент-серверной технологии СУБД



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

Открываем пакет Visuail Studio 2010. Выбираем элемент меню “File \ New Project”. В окне выбираем тип проекта “Windows Forms Application” и нажимаем “Ok”.

 

На Form1 в режиме дизайнера поместите в форму элемент управления Button и два элемента управления Label (приняв для каждого из них имя по умолчанию). Открываем файл form1.cs и в начало файла вставляем ссылки на пространства имен.

using System;

using System.Data;

using System.Data.SqlClient;

В класс формы добавляем следующий код, изменив строку соединения с базой данных в соответствии с вашей средой.

 

 

private delegate void DisplayInfoDelegate(string Text);

 

private bool isExecuting;

 

private SqlConnection connection;

 

private static string GetConnectionString()

{

return "Data Source=(local);Integrated Security=SSPI;" +

"Initial Catalog=AdventureWorks; Asynchronous Processing=true";

}

 

private void DisplayStatus(string Text)

{

this.label1.Text = Text;

}

 

private void DisplayResults(string Text)

{

this.label1.Text = Text;

DisplayStatus("Ready");

}

 

private void Form1_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)

{

if (isExecuting)

{

   MessageBox.Show(this, "Can't close the form until " +

   "the pending asynchronous command has completed. Please " +

   wait...");

   e.Cancel = true;

}

}

 

private void button1_Click(object sender, System.EventArgs e)

{

if (isExecuting)

{

   MessageBox.Show(this, "Already executing. Please wait until " +

   "the current query has completed.");

}

else

{

   SqlCommand command = null;

   try

   {

       DisplayResults("");

       DisplayStatus("Connecting...");

       connection = new SqlConnection(GetConnectionString());

       string commandText =

           "WAITFOR DELAY '0:0:05';" +

           "UPDATE Production.Product " +

           "SET ReorderPoint = ReorderPoint + 1 " +

           "WHERE ReorderPoint Is Not Null;" +

           "UPDATE Production.Product " +

           "SET ReorderPoint = ReorderPoint - 1 " +

           "WHERE ReorderPoint Is Not Null";

 

       command = new SqlCommand(commandText, connection);

       connection.Open();

 

       DisplayStatus("Executing...");

       isExecuting = true;

       AsyncCallback callback = new AsyncCallback(HandleCallback);

 

        command.BeginExecuteNonQuery(callback, command);

 

   }

   catch (Exception ex)

   {

       isExecuting = false;

       DisplayStatus(

        string.Format("Ready (last error: {0})", ex.Message));

       if (connection != null)

       {

           connection.Close();

       }

   }

}

}

 

private void HandleCallback(IAsyncResult result)

{

try

{ SqlCommand command = (SqlCommand)result.AsyncState;

   int rowCount = command.EndExecuteNonQuery(result);

   string rowText = " rows affected.";

   if (rowCount == 1)

   {

       rowText = " row affected.";

   }

   rowText = rowCount + rowText;

 

   DisplayInfoDelegate del =

    new DisplayInfoDelegate(DisplayResults);

   this.Invoke(del, rowText);

}

catch (Exception ex)

{

   this.Invoke(new DisplayInfoDelegate(DisplayStatus),

   String.Format("Ready(last error: {0}", ex.Message));

}

finally

{

   isExecuting = false;

   if (connection != null)

   {

       connection.Close();

   }

}

}

 

private void Form1_Load(object sender, System.EventArgs e)

{

this.button1.Click += new System.EventHandler(this.button1_Click);

this.FormClosing += new System.Windows.Forms.

   FormClosingEventHandler(this.Form1_FormClosing);

}

В свойствах кнопки для события OnClick из выпадающего списка выбираем обработчик нажатия кнопки button1_click(…). Выбираем в дизайнере свойств элемент Form1 и для нее аналогичным образом выбираем на событие Form_closing(…) из выпадающего списка одноименный обработчик. Сохраняем проект, компилируем, проверяем работоспособность.

 

СОДЕРЖАНИЕ ОТЧЕТА ПО ЛАБОРАТОРНОЙ РАБОТЕ

По завершении лабораторных работ студент должен представить отчет о проделанных заданиях.

Отчет предоставляется на кафедру «Информационных систем в экономике» в распечатанном виде и на дискете. Зачет по лабораторным работам основывается на качестве выполненных заданий и результатах собеседования студента с руководителем лабораторных работ.

Отчет должен содержать следующие разделы и элементы:

· Титульный лист,

· Оглавление,

· Для лабораторной работы 1. «Разработка клиент-серверного приложения баз данных (тонкий клиент, толстый клиент, n-tier архитектура)» отчет должен включать:

· Экранные копии основных форм приложения;

· Исходный код приложения (листинги).

· Для лабораторной работы 2. «Дизайн модели данных и ее использование в клиент-серверном приложении» отчет должен включать:

· Экранные копии основных форм приложения;

· Исходный код приложения (листинги).

· Для лабораторной работы 3. «Разработка клиент-серверных приложений баз данных с различным сценариям доступа к данным» отчет должен включать:

· Экранные копии основных форм приложения;

· Исходный код приложения (листинги).

· Для лабораторной работы 4. «Разработка распределенных приложений баз данных в клиент-серверной архитектуре с использованием сервисов данных» отчет должен включать:

· Экранные копии основных форм приложения;

· Исходный код приложения (листинги).

· Для лабораторной работы 5. «Асинхронные приложения баз данных в клиент-серверной технологии СУБД» …:

· отчет должен включать:

· Экранные копии основных форм приложения;

· Исходный код приложения (листинги).

· Заключение. Содержит выводы по результатам проделанной работы.

Оформление отчета должно соответствовать следующим требованиям:

· отчет оформляется в соответствии с требованиями следующих стандартов:

· ГОСТ 2.105-95 ЕСКД. Общие требования к текстовым документам;

· ГОСТ 7.32-2001 (ИСО 5966-82) СИБИД. Отчет о научно-исследовательской работе. Структура и правила оформления;

· ИСО 5966-82. Документация. Оформление научных и технических отчетов;

· ГОСТ 7.1-84 СИБИД. Библиографическое описание документа: общие требования и правила составления.

· отчет подготавливаются в текстовом редакторе Microsoft Word;

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

· шрифт – кегль 14, гарнитура «Times New Roman»;

· межстрочный интервал – 1,5;

· абзацный отступ – 1,25 см;

· выравнивание – по ширине;

· перенос автоматический «Сервис – Язык – Расстановка переносов»;

· нумерация страниц располагается внизу по центру страницы;

· поля по 2,5 см;

· формат страницы – А4 (210x297 мм).

· таблицы необходимо оформлять с использованием табличного редактора, ширина таблицы не должна превышать ширину полосы текста. Размер кегля текста внутри таблиц 12 пт, минимальный размер кегля внутри таблицы (только при необходимости) – 10. Текст головки (шапки) таблицы набирают без сокращений слов;

· при построении рисунков, графиков, диаграмм, блок-схемиспользовать только встроенные приложения WORD. Рисунки и блок-схемы необходимо выполнять, используя опции «Вставка – Рисунок – Создать рисунок». Рисунки должны быть сгруппированы. Надписи на рисунке выполняются шрифтом 12-го кегля. Все внутририсуночные тексты и буквенные обозначения должны располагаться в «рамках текста».

Образец титульного листа отчета по лабораторной работе представлен в приложении 1.

 


 


СПИСОК ЛИТЕРАТУРЫ

ОСНОВНАЯ

1. Гайдамакин Н.А. Автоматизированные информационные системы, базы и банки данных. Вводный курс. - М.: Гелиос, 2005. - 368 c.

2. Голицына О.Л., Максимов Н.В., Попов И.И. Базы данных. Учебное пособие для ССУЗов. - М.: Форум, 2007. - 399 c.

3. Кузнецов С.Д. Базы данных: Языки и модели. - M: Бином. 2007, - 720 c.

4. Майкл Дж. Хернандес, Джон Л. Вьескас SQL-запросы для простых смертных. Практическое руководство по манипулированию данными в SQL. - М.: Лори, 2007. - 480 c.

5. Маклин Й., Томас О. Оптимизация и администрирование баз данных Microsoft SQL Server 2005. - М.: Русская Редакция, 2007. - 624 c.

 

7. 2 ДОПОЛНИТЕЛЬНАЯ:

1. Weller Bart Beginning SQL Server Modelling. –Apress., 2010

2. Дунаев В.В. Базы данных. Язык SQL для студента. - СПб.: BHV, 2007. - 320 c.

3. Мирошниченко Г. Реляционные базы данных. Практические приемы оптимальных решений. - CПб.: BHV, 2005. - 400 c.

4. Пирогов В. SQL Server 2005. Программирование клиент-серверных приложений. – СПб.: БХВ, 2006. – 336 с.

5. Рудикова Л. В. Базы данных. Разработка приложений – СПб.: БХВ, 2006. – 496 с.

6. Макин Дж. К., Хотек М.Проектирование серверной инфраструктуры баз данных Microsoft SQL Server 2005. Учебный курс Microsoft – СПб.: БХВ, 2008. – 560 с.

 


 


Приложения

Приложение 1


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 261; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.037 с.)
Главная | Случайная страница | Обратная связь