пятница, 16 ноября 2012 г.

C# + Oracle

Задача:

Подключение к удаленной БД Oracle средствами .NET C#.


Теоретический экскурс:

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


Исходные данные:

1. Среда разработки: Microsoft Visual C# 2008 Express;
2. На компьютере, с которого планируется работа с удаленной БД установлено Oracle Client 11g (ODTwithODAC1120320_32bit.zip 229 MB, качаем с http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html);
3. Сервер БД - Oracle 9i Release 9.2.0.4.0.


Порядок выполнения работы:

1. Создаем проект "Project1";
~
2. Добавляем к проекту Reference (Project > Add Reference... > Browse > "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.OracleClient.dll");
~
3. В проекте Project1 создаем каталог 'Framework', в нем создаем класс 'OracleConnector' следующего содержания:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OracleClient;
using System.Windows.Forms;
using System.Data;
namespace Project1.Framework
{
    public class OracleConnector
    {
        string oraConnectionStr = "";

        OracleConnection oraConnection;
        OracleCommand oraCmd;
        OracleDataReader oraReader;

        public string errorMessage = "";

        string username = "";

        // Устанавливаем соединение с БД, результат пишем в лог.
        public OracleConnector()
        {
            oraConnection = new OracleConnection(oraConnectionStr);
        }

        // Выполняем запрос к базе данных и возвращаем DataTable
        public DataTable ExecQuery(string query)
        {
            DataTable table = new DataTable();

            oraCmd = new OracleCommand(query, oraConnection);

            try
            {
                oraReader = oraCmd.ExecuteReader();
                table.Load(oraReader);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            return table;
        }

        public bool doConnect(string server, string username, string password)
        {
            this.username = username;

            oraConnectionStr = "Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = " + server + ")(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME= orcl))); User Id=" + username + ";Password=" + password + ";";

            try
            {
                oraConnection.ConnectionString = oraConnectionStr;
                oraConnection.Open();
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message;
                return false;
            }

            return true;
        }
    }

}
~
4. Прописываем в код формы namespace, и создаем объект для работы с удаленной БД:
...
// Подключаем namespace.
using Project1.Framework;
...
// объект для работы с удаленной БД.
OracleConnector oraConnector
...
~
5. На форму добавляем компонент DataGridView (имя dgv1) и Button (имя btnDo). Для кнопки btnDo создаем обработчик:
...

private void btnDo_Click(object sender, EventArgs e)
{
      oraConnector = new OracleConnector();
      if (!oraConnector.doConnect("sr-dbserver", "username", "pwd"))
      {
            MessageBox.Show(oraConnector.errorMessage);
            return;

      }

      DataTable dTable = new DataTable();


      dTable = new DataTable();

      dTable = this.oraConnector.ExecQuery("select * from table1");

      dgv1.DataSource = dTable;
      dgv1.Update();

}

...

Комментариев нет:

Отправить комментарий

Docker. Первые контейнеры

Источник:  php.dragomano.ru Структура каталогов: ~/develop/web/project/                  nginx/      - сервис web-сервера                php...