|
|||
Часть II. КЛИЕНТСКИЕ ТЕХНОЛОГИИЧасть II. КЛИЕНТСКИЕ ТЕХНОЛОГИИ
Очевидно, что конечный пользователь не знает языка SQL, поэтому ему нужно предоставить удобный и понятный пользовательский интерфейс, с помощью которого он мог бы формировать и получать данные. В архитектуре «клиент-сервер» СУБД представляется серверной стороной, а в качестве клиентского уровня может использоваться любое приложение (консольное, оконное, web-приложение), разработанное с помощью различных технологий и языков программирования. Общая концепция обмена данными между клиентом и сервером по большей степени не зависит от технологии реализации клиентского приложения. Поэтому разберем вопросы, связанные с разработкой клиентского приложения на языке программирования C# с использованием технологии ADO.NET. Приведем типовые примеры решения различных задач, возникающих на клиентской части приложения. Для подключения к базам данных в среде .NET Framework используется пространство имен System.Data и его подпространства имен (OleDb, Odbc и пр.). Разберем основные особенности работы элементов этого пространства имен. В основе любого из них – драйвер баз данных (коннектор) – специальное программное обеспечение, которое является посредником между клиентским приложением и базой данных (серверной или файловой). Для обращения используются стандартные технологии Ole Db или ODBC.
2.1. ВЫПОЛНЕНИЕ ЗАПРОСА К БАЗЕ ДАНЫХ ИЗ КЛИЕНТСКОГО ПРИЛОЖЕНИЯ
Простая модель обращения к базе данных реализуется через три основных класса, которые могут быть реализованы на основе как универсальных технологий (Ole Db или ODBC), так и конкретных СУБД (например, SQL Server или MySQL): • Класс соединения; • Класс команды; • Класс курсора для получения данных из результата запроса. Класс соединения настраивает параметры базы данных, к которой следует подключиться. Открытие такого соединения позволяет формулировать команды к серверу баз данных. Команды оформляются с помощью языка SQL и оформляются в программе с помощью класса команды. Класс курсора предназначен для чтения данных результата запроса. Курсор обычно является последовательным, т.е. с помощью него мы можем получить последовательно все записи результата запроса, начиная с первой до последней, но не можем вернуться к уже просмотренным записям. Настройка соединения осуществляется через понятие строки соединения – параметров, которые описывают драйверы СУБД, конкретные базы данных и параметры безопасности для подключения к базе. Например, для настройки источника данных ODBC требуется воспользоваться средством администрирования операционной системы Windows. Рис. 37. Панель администрирования ОС Windows.
Для общения с серверными СУБД требуется, чтобы источник данных был системным:
Рис. 38.Окно просмотра источников данных ODBC.
При создании и редактировании источника данных требуется выбрать драйвер и задать параметры подключения к базе данных:
Рис. 39.Окно настройки источника данных для сервера MySQL.
Драйверы могут устанавливаться и регистрироваться в операционной системе вместе с соответствующей СУБД, а могут быть и самостоятельным компонентами, которые следует установить отдельно. Так, например, для SQL Server драйвер SQL Native Client устанавливается в процессе установки СУБД, а для сервера MySQL драйвер (MySQL ODBC Connector) является дополнительной компонентой, которую следует установить отдельно. Для настройки строки соединения через технологию Ole Db можно воспользоваться специальной утилитой операционной системы Windows. Для этого требуется создать файл с расширением “.udl”. При последующем открытии этого файла будут вызвано окно настройки источника данных:
Рис. 40. Окно сервиса OLE DB Core Services.
После выбора поставщика данных на вкладке «Подключение» следует настроить параметры базы данных (имя, местоположение, параметры безопасности). Этот файл можно будет открыть с помощью текстового редактора – в нем будет записана строка соединения через выбранный провайдер Ole Db. Для примера рассмотрим подключение к базе данных на SQL Server. Создадим файл connect.udl (например, с помощью «Блокнота») и откроем его с помощью службы OLE DB Core Services. На вкладке «Поставщик данных» следует выбрать пункт «SQL Server Native Client номер версии» (номер версии, очевидно, зависит от установленного на компьютере SQL Server’а). Далее на вкладке «Соединение» следует настроить параметры подключения к серверу – имя сервера, параметры входа (обычно устанавливаются из системы безопасности операционной системы), имя используемой базы данных. С помощью кнопки «Проверить подключение» можно протестировать созданную строку соединения.
Рис. 41. Окно настройки параметров подключения к SQL Server.
Далее при открытии файла connect.udl с помощью «Блокнота» мы увидим сгенерированную строку подключения: Provider=SQLNCLI11.1;Integrated Security=SSPI; Persist Security Info=False; User ID="";Initial Catalog=proba;Data Source=(local); Initial File Name="";Server SPN=""
Далее приведен программный код, в котором осуществляется подключение к источнику данных, заданному с помощью ODBC и получение данных из базы данных с помощью формирования SQL-запроса: // создание подключения к базе данных на основе строки соединения // с указанием источника данных ODBC OdbcConnection con = new OdbcConnection("DSN=proba"); // подключение к источнику данных con.Open(); // формирование команды SQL на выборку данных OdbcCommand com = new OdbcCommand("select * from Session", con); // выполнение команды на сервере и сохранение результата // в курсоре типа OdbcDataReader OdbcDataReader dr=com.ExecuteReader(); // переход к следующей строке посредством функции Read() // пока строки в результате есть – печатаем информацию из строк while (dr.Read()) Console.WriteLine(“”+dr[“NumGroup”]+” “+dr[“idSubject”]+ ” ”+dr[“Zach_exam”]); // закрывается соединение dr.Close(); con.Close();
Аналогичным будет программный код и в случае использования подключения по технологии Ole DB. Отличия будут только в именах используемых классов для доступа к базе данных (OleDbConnection, OleDbCommand, OleDbDataReader) и, соответственно, в пространстве имен, содержащее эти классы. Отметим еще момент, связанный с обеспечением доступа к полям строки курсора. Текущая строка представляется как ассоциативный массив, доступ к элементам которого можно осуществлять по номерам или по именам столбцов, что очень удобно с точки зрения последующего чтения программного кода.
|
|||
|