В качестве подключаемой базы данных был выбран Microsoft Office Access, поскольку он имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных, а также удобный интерфейс создания баз данных, таблиц в них и прост в подключении приложений. Microsoft Office Access является оптимальным выбором для маленьких программ, которым требуется одна-две базы, и не требуется взаимодействие с сервером.
Языком запросов к базе данных, разумеется, был выбран SQL, поскольку это универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных, обладающий простым синтаксисом и большими возможностями в работе.
Язык запросов к службе WMI за нас выбрала Microsoft. Это WQL. По сути он является тем же SQL, только ориентированным на работу с таблицами WMI.
Описание алгоритмов и программы.
Программа подключается к базе данных Microsoft Access, запрашивает из неё нужные имена параметров устройств, требуемые пользователю, после чего строится нужный wql-запрос, который запрашивает из WMI нужную системную информацию. Полученные данные загружаются в datdgridviev и выводятся пользователю.
|
|
Подключение к базам
Требуется подключить библиотеку System.Management. Классы из этого пространства имен используются для работы с WMI. А также библиотеку System.Data.OleDb, классы из которой используются для работы с MS Access.
using System.Management;
using System.Data.OleDb;
Создаётся экземпляр OleDbConnection, для того, чтобы подключиться к источнику данных:
OleDbConnection con = new OleDbConnection();
После этого создадим экземпляр OleDbCommand, чтобы выполнять запрос к базе данных.
OleDbCommand oleCmd = new OleDbCommand();
Сделаем привязку oleCmd к соединению con, для того, чтобы наш запрос выполнялся именно к базе данных, в которой есть соединение con.
oleCmd.Connection = con;
Далее остаётся указать строку соединения (логин, пароль, поставщик услуг, и самое главное БД)
con.ConnectionString = conStr_osn + path_to_db;
Далее программа пробует соединиться с базой, и если это удаётся, то она передаёт oleCmd пользовательский запрос, который необходимо выполнить.
oleCmd.CommandText = comText;
Далее создаём экзмпляр OleDbDataReader, который будет построчно читать данные полученные на основе пользовательского запроса.
OleDbDataReader reader = oleCmd.ExecuteReader();