Для подключения к базе данных Microsoft Access можно воспользоваться мастером настройки источника данных, входящего в состав Visual Studio. После выполнения мастера, можно перетащить объекты данных из окна «Источники данных» в формы, для создания привязанных к данным элементов управления.
В данном примере рассмотрен процесс ручного подключения к базе данных в формате Access 2003 и более ранних версий через драйвер Microsoft.JET.OLEDB.4.0 с использованием объекта «OleDbDataReader», для построчного чтения данных.
Объект «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
0.00 (0%) 0 votes









