ТРЕБОВАНИЯ К ВЫПОЛНЕНИЮ КУРСОВОЙ РАБОТЫ



Государственное образовательное учреждение высшего профессионального образования

«Донецкий национальный технический университет»

 

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ И ЗАДАНИЯ К КУРСОВОЙ РАБОТЕ ПО ДИСЦИПЛИНЕ

 

“СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ”

 

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

 

для студентов очной и заочной формы обучения направления подготовки

09.03.01 "Информатика и вычислительная техника"

профили«Вычислительные машины, комплексы, системы и сети», «Программное обеспечение средств вычислительной техники»

 

Рассмотрено на заседании кафедры

"Компьютерная инженерия"

Протокол № 5 от 30.01. 2017 г.

 

Утверждено на заседании учебно – издательского совета ДонНТУ

Протокол № ___ от __________ 2017 г.

 

 

Донецк, 2017


Методические указания и задания к курсовой работе по дисциплине "Системное программное обеспечение" для студентов для студентов очной и заочной формы обучения направления подготовки 09.03.01 «Информатика и вычислительная техника» профилей «Вычислительные машины, комплексы, системы и сети», «Программное обеспечение средств вычислительной техники» / Составитель: Чередникова О.Ю. - Донецк: ДонНТУ, 2017. – 33 с.

 

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

 

Составитель: доц. Чередникова О.Ю.

 

Рецензенты: доц. Васяева Т.А.

                   доц. Николаенко Д.В.

 


Оглавление

ВВЕДЕНИЕ. 4

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 5

1.1 Основытехнологии Windows Management Instrumentation. 5

1.2 Обработка событий WMI 7

1.3 Работа с WMI в среде .NET Framework на языке C#. 10

1.4 Работа с событиями WMI средствами VisualC#. 11

1.5 Работа с документами Microsoft Office средствами C#. 13

1.6 Работа с базой данныхиз приложения на C#. 16

ТРЕБОВАНИЯ К ВЫПОЛНЕНИЮ КУРСОВОЙ РАБОТЫ.. 21

ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ НА КУРСОВУЮ РАБОТУ.. 23

ЛИТЕРАТУРА.. 27

Приложение А.. 28

Приложение Б. 29

Приложение В.. 30

Приложение Г. 31

 


ВВЕДЕНИЕ

 

 

Тематика курсовой работы связана с отслеживанием событий, происходящих в операционной системе, с помощью технологии WMI. Актуальность задачи определяется необходимостью системному администратору или системному программисту отслеживать события ОС и в частности несанкционированные действия пользователя, запрет запуска определенных приложений, в том числе и на удаленном компьютере. Использование для этих целей технологии WMI, которая является частью ОС Windows, упрощает мониторинг работы системы и избавляет программиста от написания большого объема кода для получения необходимых сведений.

Объектом исследований в курсовой работе являются классы WMI, необходимые для реализации индивидуального задания.

Целью работы является получение студентами практических навыков работы с WMI для мониторинга состояния компонентов операционной системы.

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

 

 


ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

 

ОсновытехнологииWindowsManagementInstrumentation

 

Технология WMI (WindowsManagementInstrumentation) - это одна из базовых технологий Microsoft для централизованного управления и слежения за работой различных частей компьютерной сети под управлением Windows. Начиная с Windows 2000 компания Microsoft активно применяет эту технологию. WMI пригодится прежде всего администраторам Windows, а также разработчикам программного обеспечения. Стоит лишь добавить, что она давно перешагнула рамки управления только операционной системой Windows и позволяет контролировать множество других совместимых с ней приложений.

Технология WMI - это реализация модели управления предприятием на базе Web (Web-BasedEnterpriseManagement, WBEM), которая в свою очередь разработана при участии не только компании Microsoft, но и целого ряда других компаний. Задачей WBEM является разработка таких стандартов удалённого управления информационной средой предприятия, которые не зависят от конкретного оборудования, сетевой инфраструктуры, операционной системы, файловой системы и т.д. Стандарт WBEM является правопреемником стандарта DMI (DesktopManagementInterface). В основе реализации WMI лежи технология COM.

В рамках WBEM была предложена схема CommonInformationModel (CIM), которая представляет структуру компьютерной системы в виде единой расширяемой объектно-ориентированной модели и определяет единые интерфейсы для получения информации о любом компоненте этой модели.

Архитектура WMI включает с себя 3 глобальные части (рис.1):

1.     Управляемые объекты/ресурсы (managedresources) — любые логические или физические компоненты информационной системы, доступ к которым может быть получен с помощью WMI.

2.     Ядро WMI (WMI infrastructure). Это связующее звено архитектуры WMI, отвечающее за связь управляющих программ с управляемыми объектами.

3.     Управляющие программы (managementapplications), которые являются потребителями сервисов WMI.

 

 

Рис. 1. Архитектура WMI

 

Ядро WMI, в свою очередь, можно разделить на три части:

•   Менеджер объектов CIM (CommonInformationModelObjectManager, CIMOM), Управляет созданием и удалением объектов, а также вызовом их методов. Обеспечивает обработку всех запросов конечных приложений к WMI и доставку информации от WMI к конечным приложениям. Ваше приложение может обратиться с запросом к любой удалённой машине, на которой установлен WMI. При этом происходит соединение с CIMOM на удалённой машине, после чего запросы обрабатываются точно также, как и на локальной машине. CIMOM проверяет права пользователя, который пытается воспользоваться сервисами WMI на локальном или удалённом компьютере. Потребители WMI (конечные приложения) могут обращаться к управляемым объектам с помощью специального языка запросов WMI QueryLanguage (WQL). CIMOM позволяет создавать обработчики событий управляемых объектов. Для этого CIMOM периодически опрашивает нужный объект (интервал опроса задаётся в конечном приложении) и в случае необходимости генерирует событие.

Функциональность CIMOM обеспечивает файл winmgmt.exe, который находится в каталоге %SystemRoot%\System32\Wbem\. Этот файл запускается как сервис.

•   Репозиторий (хранилище классов и объектов) CIM WMI QueryLanguage (WQL).

Расположен в системной папке операционной системы Windows: %SystemRoot%\System32\WBEM\Repository. Все классы группируются в пространства имен, которые иерархически упорядочены и логически связаны друг с другом по определенной технологии или области управления. В WMI имеется одно корневое пространство имен Root, которое в свою очередь имеет 4 подпространства: CIMv2, Default, Security и WMI.

•   Провайдеры WMI. 

Скрывают детали внутренней реализации управляемых объектов, позволяя CIMOM обращаться к этим объектам единообразно, используя WMI API. Фактически провайдеры являются COM-серверами, которые представлены dll-библиотеками в каталоге %SystemRoot%\System32\Wbem\. Одним из провайдеров WMI является библиотека поддержки сценариев WMI.

Таким образом, WMI – это открытая унифицированная библиотека (репозиторий) однотипных интерфейсов доступа к параметрам, настройки и свойствам различных систем и их компонентов.

 

Обработка событий WMI

 

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

WMI разделяет события на внутренние (intrinsicevents), внешние (extrinsicevents) и события таймера (timerevents).

Внутренние события

События, создаваемые WMI в ответ на внутренние изменения данных; например, на создание экземпляров класса, их модификацию или удаление. WMI получает информацию о внутренних событиях от репозитария CIM.

При подписке на внутренние события используются, в зависимости от надобности, три разных класса – для работы с экземплярами, для работы с пространством имен и с самими классами, непосредственно. Каждый из этих классов позволяет реагировать на три типа событий: создание, изменение и уничтожение объекта.

__ InstanceOperationEvent - является базовым для всех внутренних событий WMI, которые относятся к экземпляру.

Был создан новый экземпляр заданного класса (подкласс __InstanceCreationEvent)

Модификация экземпляра класса (подкласс __InstanceModificationEvent);

Удаление экземпляра класса (подкласс __InstanceDeletionEvent).

Для получения доступа к объекту, который вызвал это событие, используется его свойство TargetInstance.

__NamespaceOperationEvent- является базовым для всех внутренних событий WMI, которые относятся к пространству имен.

Создание нового пространства имен (подкласс __NamespaceCreationEvent)

Модификация пространства имен (подкласс __NamespaceModificationEvent);

Удаление пространства имен (подкласс __NamespaceDeletionEvent).

__ClassOperationEvent - является базовым для всех внутренних событий WMI, которые относятся к классу.

Создание нового класса (подкласс __ClassCreationEvent)

Модификация существующего класса (подкласс __ClassModificationEvent);

Удаление класса (подкласс __ClassDeletionEvent).

Внешние события

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

События таймера

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

При работе с событиями необходимо реализовать две задачи – подписка на событие (т.е. указать WMI какие события нас интересуют и какие данные должны сопровождать каждое событие) и доставка события (т.е. указать, куда следует вернуть информацию подписчику события).

В WMI клиентское приложение подписывается на событие, создавая запрос. Запросы - это естественный способ взаимодействия с классами, позволяющий сообщить WMI, какое событие (или события) вас интересует. Запросы составляются на языке WMI QueryLanguage (WQL), который является подмножеством ANSI SQL. Основное отличие WQL от ANSI SQL состоит в том, что WQL не позволяет производить изменения в данных WMI, т. е. фактически в WQL поддерживается лишь один оператор SQL: select.

Примерзапроса:

SELECT * FROM __InstanceOperationEventWITHIN 1 WHERE TargetInstance ISA'Win32_Process'

ДанныйWQL запрос возвращает экземпляры класса__InstanceOperationEvent (с двумя подчеркиваниями), которые формируются при каждом создании, удалении или модификации экземпляраWMI класса. Оператор WITHIN определяет интервал времени в секундах между опросами. WITHIN 1 говорит о том, что опрос будет производиться каждую секунду. С помощью конструкции WHERE происходит фильтрация события, при этом оператор ISA указывает необходимые события. В приведенном выше примере происходит фильтрация событий, для которых свойствоTargetInstanceкласса __InstanceOperationEvent это экземпляр классаWin32_Process.

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

Сначала надо определить класс, моделирующий наблюдаемый объект, в данном случае - службу Win32_Service. Имя службы содержится в свойстве Name, так что запрос на подписку будет выглядеть так:

 

SELECT TargetInstance.Name FROM __InstanceModificationEvent WITHIN 10 WHERE TargetInstance ISA ´Win32_Service´ AND TargetInstance.Started = FALSE ANDPreviousInstance.Started = TRUE

Обратите внимание: в запросе используется значение PreviousInstance, чтобы определить, была ли служба запущена, а теперь остановлена. Диспетчер объектов будет проверять появление события с интервалом в 10 секунд.

 

1.3 Работа с WMI в среде .NET Framework на языке C#

Пространство имен System.Management предоставляет различные типы для поддержки операций WMIв среде .NET Framework. Это пространство имен не всегда автоматически подключается к проекту. Поэтому возможно будет необходимо добавить его вручную Проект – Добавить ссылку (Project->AddReference) см. рис.2.

 

Рис.2 Добавление ссылки на пространство имен System.Management

Некоторые изклассов этого пространства имен приведены ниже:

ManagementObject или ManagementClass

Отдельный объект или класс управления соответственно.

ManagementClass mc = new ManagementClass("Win32_Share");

ManagementPath path = new ManagementPath();

path.Path = "Win32_Share.Name=\"X$\"";

path.Server = "MCBcomputer";

path.NamespacePath = @"root\CIMV2";

ManagementObjectmo = new ManagementObject(path);

 

ManagementObjectSearcher

Используется для получения набора ManagementObjects или ManagementClasses на основе определенного запроса или перечислимого.

Пример. Получение запущенных служб ОС:

ManagementObjectSearcher query = new ManagementObjectSearcher(

"SELECT * FROM Win32_Service WHERE Started=true");

ManagementObjectCollectionqueryCollection = query.Get();//выполнениезапроса

Пример. Вывод названий установленных ОС:

ManagementObjectSearcher searcher =newManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem");

foreach(ManagementObjectqueryObjinsearcher.Get())

Console.WriteLine("Name of the operating system: {0}",queryObj["Caption"]);

ManagementScope

Представляет область (пространство имен) для управляющих операций. Используется для подключения к удаленному компьютеру.

 

ManagementScopescope=newManagementScope("\\\\FullComputerName\\root\\cimv2");scope.Connect();

 

ObjectQuery

Используется как основа для всех классов запросов.

ObjectQuery query = newObjectQuery("SELECT * FROM Win32_OperatingSystem");

ManagementObjectSearcher searcher =newManagementObjectSearcher(scope,query);

 

1.4 Работа с событиями WMI средствамиVisualC#

 

Как упоминалось выше, для работы с событиями необходимо сначала выполнить подписку на событие. В пространстве имен System.Management для этой цели используется класс ManagementEventWatcher. Наиболеепростойспособиспользованияэтогокласса – использовать конструктор, параметром которого является запрос на требуемое событие:

ManagementEventWatcher w = new ManagementEventWatcher("SELECT * FROM

__InstanceDeletionEvent WITHIN 4 WHERE TargetInstance ISA Win32_Process");

В приведенном примере осуществляется подписка на событие завершения процесса.

Запрос WMI-событий можно формировать с помощью специального класса WqlEventQuery:

WqlEventQuery query = new WqlEventQuery("__InstanceCreationEvent",

new TimeSpan(0,0,1), "TargetInstanceisa\"Win32_Process\"");

В данном примере показан запрос на событие создания процесса. Тогда подписка на событие будет иметь вид:

ManagementEventWatcher w = new ManagementEventWatcher(query);

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

ManagementEventWatcher watcher = new ManagementEventWatcher();

watcher.Query = query;

watcher.Options.Timeout = new TimeSpan(0,0,5);

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

Доставку в синхронном режиме осуществляет метод WaitForNextEvent() класса ManagementEventWatcher. Этот метод ожидает возникновения события и возвращает объект класса ManagementBaseObject, который представляет новое возникшее событие.

ManagementEventWatcher w = new ManagementEventWatcher(query);ManagementBaseObject e = watcher.WaitForNextEvent();//Display information from the eventConsole.WriteLine("Process {0} has been created, path is: {1}",  ((ManagementBaseObject)e ["TargetInstance"])["Name"], ((ManagementBaseObject)e ["TargetInstance"])["ExecutablePath"]);watcher.Stop();

Здесь с помощью индексатора[]имеем доступ к свойствам классаManagementBaseObject. Параметром индексатора является требуемое свойство.

Если Вам необходимо контролировать наступление события не одноразово, а на протяжении какого-либо периода времени, то вызов метода WaitForNextEvent необходимо ставить в цикле.

Асинхронная доставка событий осуществляется с помощью метода Start()класса ManagementEventWatcher. Доставка осуществляется с помощью события EventArrived. Поэтому до вызова этого метода необходимо добавить обработчик события EventArrived, как показано в коде ниже:

main()

{…

w = newManagementEventWatcher(query);

w.EventArrived += newEventArrivedEventHandler(EventArrived1);

w.Start();

}

publicvoid EventArrived1(Object sender, EventArrivedEventArgs e)

{ // ПолучаемобъектEventиотображаемего

ManagementBaseObject mo = e.NewEvent;

Console.WriteLine("Process {0} has been created",

((ManagementBaseObject)mo["TargetInstance"])["Name"];          

}

Метод Stop() отменяет подписку, независимо от того, является ли она синхронной или асинхронной и должен быть обязательно вызван, когда подписка на событие Вам более не нужна.

1.5Работа с документами MicrosoftOfficeсредствами C#

     Для работы с документами MicrosoftOfficeсредствами C# применяют связывание и внедрение объектов (ObjectLinkingandEmbedding, OLE)— основанный на СОМ-технологии механизм, позволяющий приложениям взаимодействовать между собой. Он повышает эффективность работы за счет использования в приложении возможностей других программ. OLE применяют для построения составных документов и использования функциональных возможностей приложений.

OLE-автоматизация —это сервисOLE,предназначенный для интеграции средств разработки и приложений: приложения предоставляют свои функции другим приложениям или управляют их возможностями на одном компьютере или в сетевой среде. Применение этой технологии обеспечивает автоматизацию приложений и их объединение с программным кодом. Ниже приведены основные элементы OLE-автоматизации.

 

1. Программы или их компоненты, которые могут управляться другими приложениями (серверы OLE-автоматизации). MicrosoftWord, Excel, PowerPoint и Outlook — примеры серверов OLE-автоматизации. Они предоставляет другим приложениям доступ к своим функциям через объектные модели.

 

2. Другие приложения или средства разработки — контроллеры OLE-автоматизации, программно управляющие серверами OLE-автоматизации за счет доступа к функциям серверов. Microsoft Visual С#, Visual C++, Visual FoxPro и Visual Basic for Application — всеэтоконтроллеры OLE-автоматизации.

 

Фактически, OLE-автоматизация представляет собой процесс обмена инструкциями между контроллерами и серверами OLE-автоматизации. Пользуясь средствами, которые предоставил сервер, контроллер передает ему инструкции для выполнения.

Основной задачей OLE-автоматизации является обеспечение взаимодействия компонентов и приложений независимо от языков программирования и средств разработки.

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

Для работы с Excel в .NET будем использовать библиотеку Microsoft.Office.Interop.Excel. Для этого добавим ее в ссылки и будем обращаться к ней через сокращение Excel:

using Excel = Microsoft.Office.Interop.Excel;

Прообразом Excel является класс Application. С помощью него мы можем открыть класс Workbook, который является прообразом книги Excel. Внутри книги, как и в Excel существует листы. Для работы с ними существует класс Worksheet. Для того, чтобы работать с Excel нам нужно загружать листы из различных книг и обращаться к ячейкам.

private Excel.Application ObjExcel = new Excel.Application();
private Excel.Workbook ObjWorkBook;
private Excel.Worksheet ObjWorkSheet;

Когда вы работаете с Excel, то создается процесс, если его не закрыть, то он так и останется висеть там, и не даст редактировать книгу, поэтому после окончания работы с книгой используйте функцию Close:ObjExcel.Quit();

Ниже приведены примеры кода работы с документом Excelв C#:

varexcelApp = this.Application;// Add a new Excel workbook.excelApp.Workbooks.Add();excelApp.Visible = true;excelApp.Range["A1"].Value = "ID";excelApp.Range["B1"].Value = "Balance";excelApp.Range["A2"].Select();

У метода Add есть необязательный параметр для указания конкретного шаблона.Необязательные параметры, впервые появившиеся в Visual C# 2010, позволяют опускать аргумент для таких параметров, если требуется использовать значение параметра по умолчанию.Поскольку в предыдущем примере никакой аргумент не передается, в методе Add используется шаблон по умолчанию и создается новая книга.В эквивалентном операторе в более ранних версиях C# необходимо было использовать аргумент-местозаполнительexcelApp.Workbooks.Add(Type.Missing).

     Для работы с документом Wordиз программы на C# необходимо добавить ссылку на пространство имен Microsoft.Office.Interop.Word. Можно, аналогично с Excel, определить алиас для упрощения обращения к пространству имен:

using Word = Microsoft.Office.Interop.Word;

Аналогично Excel, создается приложение:

Word.Application app =newWord.Application();

НижеприводятсяпримерыработысдокументамиWord:
objectmissing = System.Reflection.Missing.Value;

object save = false;

// Созданиедокумента

Word.Document doc = app.Documents.Add(ref missing, ref missing, ref missing, ref missing);

doc.Activate();

// Выводтекста

app.Selection.TypeText("Заявление");

// Параметрылиста

doc.PageSetup.PaperSize = WdPaperSize.wdPaperA4;

doc.PageSetup.Orientation = WdOrientation.wdOrientPortrait;

Выбрать уже существующую таблицу внутри документа можно по ее порядковому номеру (начиная с 1 и начала документа) можно через интерфейс Tables. Приэтоммыполучим объекттипа Table:

Word.Table _table = _document.Tables[tableNumber];

Новая таблица вставляется методом Tables.Add (предполагается что мы уже получили диапазон _currentRange того места в документе, куда будем ее вставлять):

_table = _document.Tables.Add(_currentRange, numRows, numColumns, ref _missingObj, ref _missingObj);

и добавить к ней строки:

_table.Rows.Add(ref _missingObj);

Тип границ для таблицы можно задать так:

_table.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleDouble;

_table.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleDouble;

Имея таблицу, мы можем получить диапазон для конкретной ячейки по номеру строки/колонки через интерфейс Cell:

_currentRange = _table.Cell(rowIndex, columnIndex).Range;


 

1.6Работа с базой данныхиз приложения на C#

Создание базы данных в VisualStudio

Для работы с данными используются системы управления базами данных (СУБД). Основные функции СУБД:

– определение данных (описание структуры баз данных);

– обработка данных;

– управление данными.

Для работы с базами данных корпорация Microsoft предлагает облегченный сервер баз данных Microsoft SQL Server. Существуют разные версии Microsoft SQL Server, например: Microsoft SQL Server 2005, Microsoft SQL Server 2008, Microsoft SQL Server 2014 и прочие версии.

 Загрузить эти версии можно с сайта Microsoftwww.msdn.com.

 Этот сервер отлично подходит для работы с базами данных. Он бесплатен и имеет графический интерфейс для создания и администрирования баз данных с помощью SQL ServerManagementTool.

Вместе с VisualStudio обычно устанавливается Microsoft SQL Server, поэтому для простых локальных баз данных скачивать Microsoft SQL Server отдельно не обязательно.

 Прежде всего, перед созданием базы данных, нужно активировать утилиту ServerExplorer. Для этого, в MS VisualStudio нужно вызвать View ->ServerExplorer (Вид->Обозреватель серверов).

Чтобы создать новую базу данных, базирующуюся на поставщике данных Microsoft SQL Server, нужно кликнуть на узле DataConnections (Подключения данных), а потом выбрать “CreateNew SQL ServerDatabase …” (Создать новую базу данных). В результате появится окно (рис.2), в котором необходимо ввести имя сервера и имя базы данных.

Рис. 2. Создание новой базы данных SQL Server

После этого в проекте появится файл с расширением .mdf.

Другой вариант добавления локальной базы данныхSQLServerCompact, в меню Проект выбрать Add(Добавить)->New (Новый элемент)->Локальная база данных.

Откроется Мастер настройки источников данных с новым файлом .sdf, выбранным в качестве подключения данных.Нажмите кнопку Далее.

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

(Нет доступных объектов базы данных, так как это новая база данных.)

В проект добавятся файлы .sdf и .xsd. Файл .sdf будет отображаться и в ServerExplorer. В этом окне можно просматривать, добавлять таблицы, а также заполнять их данными (рис.3).

 

Рис.3. Добавление новой таблицы

 

Чтобы вызвать режим ввода данных в таблицу, нужно вызвать команду ShowTableData из контекстного меню (клик правой кнопкой мышки) (рис. 4).

Рис.4 Внесение данных в таблицу

Обеспечение доступа к БД в программе

Чтобы осуществлять связь между базой данных и приложением на C# необходим посредник. И именно таким посредником является технология ADO.NET.

ADO.NET предоставляет собой технологию работы с данными, которая основана на платформе .NET Framework.

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

Функционал ADO.NET построен таким образом, чтобы предоставить разработчикам унифицированный интерфейс для работы с самыми различными СУБД.

Чтобы использовать один и тот же набор объектов для разных источников данных, необходим соответствующий провайдер данных. Собственно черезпровайдер данных в ADO.NET и осуществляется взаимодействие с базой данных.

По умолчанию в ADO.NET имеются следующие встроенные провайдеры:

· Провайдер для MS SQL Server

· Провайдер для OLE DB (Предоставляет доступ к некоторым старым версиям MS SQL Server, а также к БД Access, DB2, MySQL и Oracle)

· Провайдер для ODBC (Провайдер для тех источников данных, для которых нет своих провайдеров)

· Провайдер для Oracle

· Провайдер EntityClient. Провайдер данных для технологии ORM EntityFramework

· Провайдер для сервера SQL ServerCompact 4.0

 

Основныеобъекты взаимодействия с базами данных в ADO.NET:

· объект Connection : установка подключения к источнику данных.

· Объект Command позволяет выполнять операции с данными из БД.

· Объект DataReader считывает полученные в результате запроса данные.

· Объект DataSet предназначен для хранения данных из БД и позволяет работать с ними независимо от БД.

· объект DataAdapter является посредником между DataSet и источником данных.

Главным образом, через эти объекты и будет идти работа с базой данных.

Подключение к БД

1. Создаем строку подключения (набор параметров в виде пар ключ=значение)

stringconnectString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True";

 

2. Созданиеподключения

SqlConnection connection = new SqlConnection (connectString);

 

3. Открываем подключение    

connection.Open();

4. Закрываем подключение   

connection.Close(); 

Вместо вызова метода Close() можно использовать конструкциюusing{…}:

using (SqlConnection connection = new SqlConnection(connectionString))

{ connection.Open();

Console.WriteLine("Подключениеоткрыто");

}

Последовательность обращения к БД:

1. Созданиезапроса

SqlCommand command = new SqlCommand();

command.CommandText = "SELECT * FROM Users";

command.Connection = connection;

Или

SqlCommand command = new SqlCommand(sqlExpression, connection);

 

2. Выполнение запроса

один из методов SqlCommand:

ExecuteNonOuery: выполняет sql-выражение и возвращает количество измененных записей. Подходит для sql-выражений INSERT, UPDATE, DELETE.

 

ExecuteReader: выполняет sql-выражение и возвращает строки из таблицы. Подходит для sql-выражения SELECT. Этот метод возвращает объект SqlDataReader, который используется для чтения данных.

 

ExecuteScalar: выполняет sql-выражение и возвращает одно скалярное значение, например, число. Подходит для sql-выражения SELECT в паре с одной из встроенных функций SQL, как например, Min, Max, Sum, Count.

 

ПримерсчитыванияданныхизБД

stringconnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=db;Integrated Security=True";

stringsqlExpression = "SELECT * FROM Users";

using (SqlConnection connection = new SqlConnection(connectionString))

{ connection.Open();

SqlCommand command = new SqlCommand(sqlExpression, connection);

SqlDataReader reader = command.ExecuteReader();

if(reader.HasRows) // еслиестьданные

{ // выводимназваниястолбцов

Console.WriteLine("{0}\t{1}\t{2}", reader.GetName(0),

reader.GetName(1), reader.GetName(2));

while (reader.Read()) // построчносчитываемданные

{

object id = reader.GetValue(0);//object id = reader["id"];

                          //илиint id = reader.GetInt32(0);

object name = reader.GetValue(1);// object name = reader["name"];

                            // string name = reader.GetString(1);

object age = reader.GetValue(2); //object age = reader["age"];

                            // int age = reader.GetInt32(2);

Console.WriteLine("{0} \t{1} \t{2}", id, name, age);

}

   }

reader.Close();


ТРЕБОВАНИЯ К ВЫПОЛНЕНИЮ КУРСОВОЙ РАБОТЫ

 

В результате выполнения курсовой работы средствами MicrosoftVisual

C# должна быть разработана и отлажена программа для работы в ОСWindows, которая удовлетворяет следующим требованиям:

- обеспечивать возможность запуска и останова мониторинга состояния объекта ОС, указанного в варианте;

- отслеживать и выдавать на экран сообщения о возникновении событий ОС (в соответствии и вариантом);

- сохранять информацию о возникших событиях (или во внутренних структурах данных программы или в базе данных (БД)). Использование БД является обязательным для получения отличной оценки по курсовой работе.

- при использовании для сохранения БД должны быть обеспечены возможности просмотра всей БД, ее очистки;

- формировать отчет в виде документаMicrosoftWord или MicrosoftExcel, согласно варианту.В файле формата MicrosoftWord должна быть создана таблица, в файле формата MicrosoftExcel – границы ячеек, в которых содержатся данные, должны быть выделены. Внешние границы ячеек в Excel должны быть на 2 пункта шире,чем внутренние.

- иметь удобный интерфейс пользователя.

 

Предполагается следующий порядок выполнения работы:

1) разработать структуру базы данных для хранения информации о событиях;

2) разработать интерфейс пользователя;

3) разработать модуль подписки на событие и обработки этого события;

4) разработать модуль сохранения информации о событии;

5) разработать модуль формирования отчета.

6) провести отладку и тестирование разработанного программного обеспечения.

   7) оформить пояснительную записку и защитить работу.

 

Основная часть пояснительной записки должна включать следующие разделы:

- Описание классов WMI, используемых в программе.

- Описание структуры программы и организация меню.

- Программный модуль сбора информации об объектах операционной системы.

- Программный модуль формирования выходных данных в виде таблиц базы данных.

- Программный модуль формирования выходных данных в виде документов MicrosoftOffice.

- Тестирование программы на контрольном примере.

 

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

 

Приложения должны содержать: листинги исходных текстов программы, данные контрольного примера, распечатки сформированных документов по данным контрольного примера.


Дата добавления: 2018-04-04; просмотров: 233; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!