Зачастую приходится делать небольшие программы, которые должны содержать в себе базу данных. Заморачиваться с тяжеловесными СУБД не очень хочется, ведь для того, чтобы всё работало, нужно наличие этой базы на компьютере пользователя. Поэтому логичным шагом будет использование 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.
Всем спасибо, следите за следующими записками.