В данной работе рассматривается организация связи программного обеспечения автоматизированных систем управления технологическими процессами [1], разрабатываемого в объектно-ориентированной среде Visual Studio на языке C# с объектно-реляционной СУБД Oracle Database (или Oracle RDBMS).
Для разработки подобных программ первым шагом должно быть подключение пространства имен System.Data.OracleClient [2-4]. Данное пространство имен больше не включается в состав поставщика данных .Net Framework, поэтому его необходимо подключать отдельно (например, загрузить с официального сайта Oracle).
Для подключения необходимо в окне «Обозреватель решений» («Solution Explorer») кликнуть правой кнопкой мыши по разделу «References» (см. рис. 1а) и в появившемся меню выбрать «Добавить ссылку» («Add Reference»). В появившемся окне (см. рис. 1б) нажать кнопку «Обзор» («Browse») и указать путь к месту расположения пространства имен.
После этого, в коде программы необходимо добавить использование этого пространства. Для этого, нужно ввести следующее:
using namespace System.Data.OracleClient;
После этого действия можно начинать писать код программы, выполняющий взаимодействие уже непосредственно с базами данных. Первым делом необходимо реализовать подключение к СУБД.
Подключение к базе данных производится с использованием класса OracleConnection(connectionString). В переменной connectionString должна содержаться информация о сервере, на котором расположена база данных. Ее должно значение приведено ниже:
string connectionString = “Data Source=(DESCRIPTION=(ADDRESS= (PROTOСOL=
TCP)(HOST=[HOST_NAME])(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=[SERVICE_NAME]))); User ID= [USER_NAME];Password= [USER_PASSWORD]”
Вместо [HOST_NAME], [SERVICE_NAME], [USER_NAME] и [USER_PASSWORD] необходимо указать параметры подключаемой базы данных, расположенной на удаленном (в частном случае локальном) сервере. Данные параметры описаны в файле «tnsnames.ora», расположенном по следующему пути:
«…Oracleproduct[version]serverNETWORKADMIN».
а б
Рис. 1. Окна подключения пространства имен
Подключение к базе данных реализуется следующим кодом:
OracleConnection Oracle_Connect = new OracleConnection(connectionString);
Oracle_Connect.Open();
Oracle_Connection.Close();
Как видно из приведенного фрагмента – создается экземпляр класса OracleConnection названный Oracle_Connect, обладающий свойством connectionString и методами Open() и Close(), которые соответственно позволяют создать и завершить подключение к СУБД.
После того как подключение к СУБД было рассмотрено, целесообразно показать, каким образом оправляется запрос к СУБД.
Взаимодействие с СУБД производится при помощи SQL-запросов. Для использования таких команд SQL как CREATE TABLE, DROP TABLE, INSERT, DELETE, UPDATE и подобных им, то есть тем, которые не получают в ответ никакой информации, можно использовать следующий код:
string MyQuery = “[SQL-запрос]”;
using (OracleConnection conn =
new OracleConnection(connectionString))
{ OracleCommand MySQLCommand =
new OracleCommand(MyQuery, conn);
MySQLCommand.Connection.Open();
MySQLCommand.ExecuteNonQuery(); }
OracleCommand – это класс, позволяющий отправить команду к СУБД. Как видно из фрагмента кода, этот класс обладает свойствами MyQuery и conn. Соответственно необходимо заранее задать значения этих свойств, что позволит конструктору правильно выполнить свои функции.
MyQuery – строковая переменная, в которой хранится текст SQL-запроса. Для правильного функционирования отправки запроса, в конце запроса, хранимого в этой переменной нельзя ставить знак «;».
Conn – строковая переменная, содержащая строку подключения (аналогичную Oracle_Connect).
ExecuteNonQuery – метод, применяющий SQL-команду применительно к свойству conn.
Поскольку язык SQL-запросов предназначен не только для создания и редактирования таблиц, но и для отображения результатов этих операций, то необходимо рассмотреть эту возможность средствами языка C# и среды Visual Studio.
Рассмотрим пример, в котором используются возможности Visual Studio по созданию форм (окон с различным наполнением – например, кнопками, полями для ввода текста, выпадающими меню и т.п.).
Добавьте на компонент Form вашей программы (решение «Приложение Windows Form») компонент dataGridView. Управление DataGridView предоставляет ориентированную настраиваемую таблицу для отображения данных. Класс DataGridView поддерживает настройку ячеек, строк, столбцов и платформы с помощью свойств DefaultCellStyle, ColumnHeadersDefaultCellStyle, CellBorderStyle и GridColor.
Можно использовать элемент управления DataGridView для отображения данных как с базовым источником данных, так и без него. Без определения источника данных можно создать столбцы и строки, которые содержат данные и добавить их непосредственно в DataGridView с помощью свойства Rows и Columns. Можно также использовать коллекцию Rows для доступа к объектам DataGridViewRow, а для чтения или записи значения ячеек напрямую – свойство DataGridViewRow.Cells . Индексатор Item также предоставляет прямой доступ к ячейкам.
В качестве альтернативы заполнения элемента управления вручную можно задать свойства DataSource и DataMember для привязки DataGridView к источнику данных и автоматически заполнить ее данными.
При работе с очень большими объемами данных можно задать свойство «VirtualMode = true», чтобы отобразить подмножество доступных данных. Виртуальный режим требует реализации кэша данных, из которого элемент управления DataGridView заполнен.
Ниже приведен код, позволяющий реализовать отображение данных вслед SQL-запросу SELECT.
OracleConnection conn = new OracleConnection(connectionString); conn.Open();
OracleCommand command =
conn.CreateCommand(); command.CommandText =
MyQuery;
DataTable myTable = new DataTable();
OracleDataAdapter adapt =
new OracleDataAdapter(command);
adapt.Fill(myTable); BindingSource bind =
new BindingSource();
bind.DataSource = myTable; dataGridView1.
DataSource = bind.DataSource;
Command – экземпляр класса OracleCommand хранит в своем свойстве CommandText текст команды из переменной MyQuery. MyTable – особая переменная, в которой будет храниться таблица значений.
OracleDataAdapter выполняет роль моста между свойством DataSet (расположенный в памяти кэш данных) и базой данных при извлечении и сохранении данных. OracleDataAdapter обеспечивает такой мост c помощью метода Fill для того, чтобы загрузить данные из базы данных в DataSet, и с помощью метода Update для того, чтобы отправить изменения, произведенные в DataSet, обратно в источник данных.
OracleDataAdapter заполняет DataSet и одновременно создает необходимые таблицы и столбцы для возвращенных данных, если таких таблиц и столбцов еще нет. Однако сведения о первичном ключе не включаются в схему, созданную в явном виде, если для свойства MissingSchemaAction не задан объект AddWithKey. С помощью OracleDataAdap-ter также можно создать схему DataSet, в которую будут включены сведения о первичном ключе, прежде чем она будет заполнена данными с помощью метода FillSchema.
Код «adapt.Fill(myTable);» заполняет элемент myTable данными, полученными в ответ на SQL-запрос «SELECT …».
Компонент BindingSource упрощает привязку элементов управления к форме представления данных. Свойство DataSource у компонента BindingSource, предварительно заполнив данными из таблицы myTable, можно использовать для заполнения таблицы на форме (компонент dataGridView.DataSource).
Применяя приведенные выше конструкции легко можно писать программное обеспечение автоматизированных систем управления технологическими процессами при использовании СУБД Oracle Database.
Южно-Уральский государственный университет https://susu.ru
Библиографическая ссылка
Варкентин В.В., Барбасова Т.А. разработка ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ технологическими процессами с использованием VISUAL STUDIO и БАЗЫ ДАННЫХ ORACLE // Современные наукоемкие технологии. – 2013. – № 8-1. – С. 78-80;URL: https://top-technologies.ru/ru/article/view?id=32478 (дата обращения: 17.08.2024).