VD Net

27 декабря 2010, 07:51

[Записки программиста] Записка №1: «mdb-файл как база данных»

!!! Сообщение со старого блога !!!

Зачастую приходится делать небольшие программы, которые должны содержать в себе базу данных. Заморачиваться с тяжеловесными СУБД не очень хочется, ведь для того, чтобы всё работало, нужно наличие этой базы на компьютере пользователя. Поэтому логичным шагом будет использование mdb-файл в качестве баз данных, тем более, что их легко править через MS Access.

В примере будет использован язык C# и библиотека .NET Framework.

Начинается всё с указания источника:

String connectionString = "provider=Microsoft.Jet.OLEDB.4.0; data source=c:\base.mdb";
Конечно же, не забудьте подключить нужные библиотеки (System.Data.OleDb), ведь именно в них содержатся нужные классы, кроме того лучше всего будет сделать:

using System.Data.OleDb;
Далее создаём объект-коннектор к базе и открываем её:

OleDbConnection myOleDbConnection = new OleDbConnection(connectionString);
myOleDbConnection.Open();
Пришло время выполнения запросов. Сейчас мы сформируем запрос, получим ссылку на объект-читатель после выполнения запроса и разберёмся, как же прочитать ответ с помощью объекта-читателя:

OleDbCommand myOleDbCommand = myOleDbConnection.CreateCommand();
myOleDbCommand.CommandText = "SELECT ID FROM TABLE_A";
OleDbDataReader myOleDbDataReader = myOleDbCommand.ExecuteReader();
while (myOleDbDataReader.Read())
{
  MessageBox.Show(myOleDbDataReader["ID"]);
}
myOleDbDataReader.Close(); 
Как мы видим, запрос представляет собой обыкновенный SQL-запрос (чуть ниже я расскажу об одной обнаруженной особенности), а в качестве индекса в читателе можно указывать непосредственно название атрибута (при этом никто не запрещает использовать AS). Если неизвестны названия атрибутов, их количество, то используем доступ по индексу и получение количества с помощью свойства FieldCount у читателя.

После выполнения всех запросов нужно закрыть соединение с базой:

myOleDbConnection.Close();
Вот так вот просто и без проблем можно подключить к своей программе базу данных. Ещё данный метод можно применять, если мы хотим работать именно с mdb-файлами (т.е. читать и изменять их) в целях последующей обработки, к примеру, в самом MS Access. Например, для сбора каких-то данных. В принципе, фантазия не ограничена и этому способу можно дать бесконечное количество применений.

Да, что касается особенностей. Просто JOIN в запросе выполнить не удалось, вместо него пришлось писать INNER JOIN, причём синтаксис этой команды соединения таблиц полностью схож с синтаксисом JOIN.

Всем спасибо, следите за следующими записками.
VD42
Копирование и использование материалов сайта разрешается только при указании активной прямой ссылки без rel=nofollow на страницу с копируемым материалом. Если какие-то условия не выполнены или не могут быть выполнены, то разрешение можно получить по электронной почте vladislav.kochemaev@gmail.com с указанием цели использования. При копировании материалов сайта вы автоматически соглашаетесь с этими условиями.