Отправляет email-рассылки с помощью сервиса Sendsay

Килограмм килобайтов

  Все выпуски  

Килограмм килобайтов


"Килограмм килобайтов"


Выпуск №5 Дата выхода:2007-02-12
Сайт рассылки: отсутствует

Здравствуйте, уважаемые подписчики.


В продолжение темы работы с СУБД предлагаю вашему вниманию обзор технологий доступа к базам данных. Обзор подготовил Молчанов Владислав http://wladm.narod.ru.

Обзор технологий доступа к базам данных

Взаимодействие приложения с БД может быть организовано различными способами. Первоначально, как основные, преобладали способы, основанные на API (Application Programming Interface) библиотек СУБД (позже, дополнительно, и СOМ объектов), входящих в состав клиентского программного обеспечения, устанавливаемого на компьютерах пользователей. Как правило, клиентское программное обеспечение включало в себя и собственную среду разработки прикладного программного обеспечения. Это приводило к тому, что замена СУБД требовала значительной переделки кода приложения. Как результат - в настоящее время главенствующими становятся универсальные механизмы доступа к данным.

Универсальные механизмы доступа к данным обычно реализованы в виде библиотек и дополнительных модулей (драйверов или провайдеров). Библиотеки содержат определенный стандартный набор классов, методов, параметров, и обеспечивают стандартный интерфейс доступа к данным. Дополнительные модули реализуют непосредственное обращение к функциям клиентского API конкретных СУБД. Причем, эти дополнительные модули, устанавливаются исходя из текущей потребности. Если, Например, приложение работало с использованием ADO (см. ниже) и, допустим, использовало визуальный компонент Ado Table - то теперь при необходимости переноса БД с MySQL на Postgres достаточно будет только установить соответствующий драйвер и изменить строку Connection в параметрах компонента. Изменение кода приложения не требуется.

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

Среди универсальных методов доступа к данным наиболее распространены в настоящее время:

  • ODBC - Open Database Connectivity.
  • OLE DB - Object Linking and Embedding Database.
  • ADO - ActiveX Data Objects.
  • BDE - Borland Database Engine.
  • ADO.NET - ActiveX Data Objects технологии NET.

ODBC (Microsoft) - механизм взаимодействие с реляционными базами данных. Для обеспечения доступа к БД необходимы клиентская часть СУБД, ODBC-драйвер для доступа к этой СУБД (или только драйвер для некоторых СУБД) и соответствующая настройка ODBC на компьютере (обычно имя драйвера, пользователя, имя базы, пароль доступа и указание некоторых параметров драйвера). Драйвер, при выполнении приложения, загружается в адресное пространство приложения и используется для доступа к БД. Для каждой СУБД используется собственный ODBC-драйвер. ODBC API стандартизован. В визуальных средах разработки теперь достаточно помещения на форму соответствующего компонента, указания источника данных ODBS, имени таблицы и связь с базой данных установлена или через клиентскую часть СУБД или через соответствующий драйвер.

OLE DB (Microsoft) - механизм работы с самыми разнообразными источниками данных (в отличии от ODBC - где только работа с реалиционными БД) на базе COM-интерфейса. OLE DB определяет набор COM-интерфейсов (Component Object Model), включающих различные сервисы однотипного доступа к различным данным (в том числе и к нереляционным БД, например, к папкм систем электронной почты или просто файлам), обеспечивая при этом поддержку работы с наборами данных и иерархическими наборами записей, подключенными непостоянно к сети. Для доступа к БД требуется установка OLE DB провайдера для использованной СУБД (DLL СУБД загружается при выполнении приложения в его адресное пространство). Кроме того, фирмой разработан специальный провайдер (Microsoft OLE DB Provider for ODBC Drivers), который может работать не через API клиентской части СУБД, а через интерфейс ODBC API.

ADO (Microsoft) - своеобразная надстройка над OLE DB (использует библиотеки OLE DB) - дополнительный набор библиотек, содержащих COM-объекты, реализующие интерфейс доступа к данным. Этот набор библиотек первоначально включал две объектные технологии Microsoft: Data Access Objects (DAO) и Remote Data Objects (RDO) - два различных механизма доступа к локальным и удаленным базам данных соответственно.

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

BDE (Borland) - универсальный механизм доступа к данным, базирующийся на двух группах библиотек-драйверов (SQL Links - для серверных СУБД и ODBS Links - для серверных и автономных СУБД). Эти библиотеки позволили применять стандартный набор функций для доступа к данным dBase, Access, FoxPro, ODBC-источников, а также большинства серверных СУБД. BDE поддержан на уровне компонент в визуальных средах разработки фирмы Borland. Реализация механизма позволяет функциям приложения обращаться к функциям клиентского API или ODBC API, а также непосредственно манипулировать файлами данных некоторых СУБД. Для доступа к базе данных с помощью BDE на компьютере должны быть установлены библиотеки BDE общего назначения (обычно устанавливаются вместе со средой разработки и затем включаются в .exe файл), а также BDE-драйвер для данной СУБД.

ADO.NET (Microsoft) - технология работы с базами данных в three-tier(многоярусной архитектуре), когда соединение с базой данных устанавливается лишь на период выполнения операций с БД (как правило кратковременных). Ее появление связано с необходимостью разрешения противоречия между ростом числа обращений к БД (особенно в БД интернет-серверов) и невозможностью базы данных поддерживать неограниченное число активных соединений. ADO.NET призвана решить эти и другие проблемы и вместе с тем сохранить удобство и простоту программирования. ADO.NET, в ее современном виде - иерархический набор объектов, построенный в соответствии с новой идеологией базовых библиотек классов и смены протоколов COM на .NET.

***

В предыдущем выпуске я разбирал приемы работы с компонентом .Net Framework DataGridView. Я отметил, что предложенный способ имеет ряд существенных недостатков. За неделю я продвинулся в изучении этого вопроса и хочу вам предложить более интересное решение.

Итак, помещаем в форму компонент DataGridView и называем его PrjList. Вызываем окно свойств (Properties) этого элемента и открываем свойство Columns категории Misc. Появится диалоговое окно Edit Columns. Нажимаем кнопку Add… и заполняем свойства каждой колонки. Здесь нас интересуют следующие параметры: HeaderText - видимое название колонки, Width - ширина колонки и самый интересный параметр DataPropertyName - этот параметр определяет из какого столбца выборки будет заполнен это столбец таблицы DataGridView. Таким образом мы связываем таблицу базы данных и ее отражение в форме. Ниже предлагаю текст программы.


public partial class ReferencePrj : Form
{
  //Соедиение с базой 
  OracleConnection conn;
  //Механизм заполения DataSet
  OracleDataAdapter productsAdapter;
  // DataSet Кэш данных в оперативной памяти 
  DataSet productsDataSet;

  public ReferencePrj()
  {
    InitializeComponent();
    Connect();     
    FillList();
  }

  private void Connect()
  {
    try
    {
      //Строка соедиения 
      string connectionString = "Data Source=" + "<имя базы данных>" +
                                ";User Id=" + "<имя пользователя>" +
                                ";Password=" + "<пароль пользователя>";
      //Установление соедиения 
      conn = new OracleConnection(connectionString);
      conn.Open();
    }
      // обработка исключений
      catch (Exception ex)
      {
        MessageBox.Show(ex.ToString());
      }
  }

  private void FillList()
  {
    try
    {
      //создание OracleDataAdapter 
      productsAdapter = new OracleDataAdapter();

      //выборка из базы
      productsAdapter.SelectCommand = new OracleCommand("Select PrjType, PrjName, "+
                                                        "PrjPriority from tPrjm_refrencePrj", conn);
      //cоздание кэша данных
      productsDataSet = new DataSet();

      //заполнение выбранными данными кэша
      productsAdapter.Fill(productsDataSet,"tPrjm_RefrencePrj");

      //связывания кэша данных и компанента визуализации.   
      PrjList.DataSource = productsDataSet;
      PrjList.DataMember = "tPrjm_RefrencePrj"; 
    }
    catch (Exception ex)
    {
      MessageBox.Show(ex.ToString());
    }
  }
}

Обратите внимание на использование класса DataSet - это универсальное хранилище данных, в него можно прочитать данные из файла или как сейчас, из базы данных. Интересно, что одновременно DataSet можно загрузить несколькими наборами данных, в примере выше только один набор - "tPrjm_RefrencePrj", который в последствии и передается в DataGridView.

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

* * *

Ведущий рассылки: Петрелевич Сергей

Вас есть вопрос? Спрашивайте
Напишите, что Вы хотите видеть в рассылке. Мне важно знать Ваше мнение.


В избранное