Построчное чтение данных из Access database

      Для подключения к базе данных Microsoft Access можно воспользоваться мастером настройки источника данных, входящего в состав Visual Studio. После выполнения мастера, можно перетащить объекты данных из окна "Источники данных" в формы, для создания привязанных к данным элементов управления.

При добавлении файла базы данных «.mdb» через Мастер настройки источника данных, пользователю предоставляется выбор: добавить файл в проект или оставить его в его исходном местоположении. Если вы выбрали вариант добавления файла в проект. После завершения работы мастера, в проект добавятся два фала базы данных: Файл «.mdb» и файл строго типизированного набора данных «.xsd». Выбранные объекты базы данных сразу же становятся доступны в Окно "Источники данных" для перетаскивания в форму.
      В данном примере рассмотрен процесс ручного подключения к базе данных в формате Access 2003 и более ранних версий через драйвер Microsoft.JET.OLEDB.4.0 с использованием объекта «OleDbDataReader», для построчного чтения данных.
OLE DB - это стандарт обмена данными между приложениями, позволяющий вам выполнять различные манипуляции с базами данных Access.
      Объект «OleDbDataReader» представляет собой «присоединенный» однонаправленный курсор, который перемещается только вперед. Другими словами, вы можете просматривать возвращенные записи только в одном направлении, а соединение с базой данных остается открытым до тех пор, пока не будет закрыт объект считывания данных. Экземпляр класса «OleDbDataReader» не может быть порожден непосредственно – такой объект всегда возвращается как результат вызова метода «ExecuteReader» класса «OleDbCommand». Метод «ExecuteReader» выполнит SQL команду и возвратит объект «IDataReader».
OleDbDataReader dr = command.ExecuteReader();
      В классе «OleDbDataReader» имеется индексирующий объект, который обеспечивает доступ к любому полю, используя синтаксис массива «dr["Name"])».Доступ к данным классам открывают две директивы:
using System;
using System.Data.OleDb;
      Чтение данных осуществляется через цикл «while (dr.Read())», в котором построчно считываются данные с указанием необходимых полей (колонок).
Ниже представлен полный листинг примера по считыванию стран из базы данных Access 2003 «OleDbDataReader.mdb», таблицы «Country» и поля (колонки) «Name» с выводом в следующие элементы управления:

  • ComboBox;
  • ListBox;
  • CheckedListBox
  • TextBox;
  • RichTextBox;
  • TreeView.
// Объявляем переменную для подключения к БД.
OleDbConnection connection = new OleDbConnection();

//Строка соединения с БД, котороя содержит провайдера для
//подключения и имя базы данных,
//которая будет находиться рядом с исполняемым файлом.
connection.ConnectionString =
   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=OleDbDataReader.mdb";

//Инициализируем новую переменну
//содержащую комманду - запрос
OleDbCommand command = new OleDbCommand();

//Текст комманды-запроса к базе данных
command.CommandText = "Select Name from Country";

//Задаем подключение System.Data.OleDb.OleDbConnection, 
//используемое экземпляром класса System.Data.OleDb.OleDbCommand.
command.Connection = connection;

try
{
    //Открываем новое подключение к базе данных со значениями свойств,
    //определяемыми объектом 
    //System.Data.OleDb.OleDbConnection.ConnectionString.
    connection.Open();

    //Отправляет System.Data.OleDb.OleDbCommand.CommandText 
    //в System.Data.OleDb.OleDbCommand.Connection
    //и создает объект System.Data.OleDb.OleDbDataReader.
    OleDbDataReader dr = command.ExecuteReader();

    //Значение true, если объект System.Data.OleDb.OleDbDataReader 
    //содержит одну или несколько строк; 
    //в противном случае — значение false.
    if (dr.HasRows)
    {
        //
        while (dr.Read())
        {
            //Добавляем новую строку в элементы управления
            //, где в качестве источника значения
            //указывается имя столбца.
            comboBox1.Items.Add(dr["Name"]);

            listBox1.Items.Add(dr["Name"]);

            checkedListBox1.Items.Add(dr["Name"]);

            textBox1.Text = textBox1.Text + dr["Name"] + " ";

            richTextBox1.Text = richTextBox1.Text
                + dr["Name"] + Environment.NewLine;

            treeView1.Nodes.Add(dr["Name"].ToString());
        }

        //Устанавливаем в элементе управления 
        //comboBox1 по умолчанию выбранным, первый элемент списка
        comboBox1.SelectedIndex = 0;
    }
}
catch (Exception ex)
{
    //Сообщение об ошибке
    MessageBox.Show("Ошибка получения данных: " +Environment.NewLine
        + ex.ToString());
}
finally
{
    //Закрываем соединение с базой данных.
    connection.Close();                
}
Результат работы данного примера представлен ниже.

Ссылка на исходник: Rusfolder.net


2 комментария:

Большая просьба, не писать в комментариях всякую ерунду не по теме!