Редакция статьи от 26.04.2013
В своей работе я буду использовать Visual Studio 2008 Pro & C#
Довольно часто на форуме всплывает данный вопрос, по сему решил обобщить разрозненную информацию в данном сообщении.
Я покажу в трех частях как можно подключиться и взаимодействовать с файлом базы данных Access.
Часть 1 - Где с помощью визуальных средств добавляем к нашему проекту копию файла данных.
Часть 2 - Где с помощью визуальных средств подключаем существующий файл без создания копии в проекте.
Часть 3 - Чисто код.
Первоначально понадобится таблица с данными в файле Access.
Имя файла db1.mdb, таблица People c данными:
Код_People — Счетчик, Имя — Текст, ДатаРождения — Дата/Время
Скачать Access базу:
https://skydrive.live.com/?cid=3A4FDD8B3B890BE4&id=3A4FDD8B3B890BE4%21315
зеркало:
https://drive.google.com/folderview?id=0B1sG6jmDKzlvT2JQY0prWGNNelE
Часть 1
Где с помощью визуальных средств добавляем к нашему проекту копию файла данных.
Создаем новый Windows Forms проект.
File → New → Project → Windows → Windows Forms Application и называем его VisualAccessConnect
правой кнопкой мыши по проекту → Add → Existing Item... → В типах файлов выбираем Data Fiels → после чего находим наш db1.mdb и жмем ОК.
Автоматически открывается Data Source Configuration Wizard → Отмечаем, что мы хотим выбрать все таблицы.
Жмем Finish.
После чего у нас появляется в проекте строго типизированный DataSet содержащий в себе DataTable People и PeopleTableAdapter
Теперь добавляем на Form1 DataGridView
И в его свойстве DataSource выбираем нашу таблицу People
Все готово к отображению данных и при нажатии ctrl + F5 вы увидите такую картину:
Если у вас вывалилось исключение - the 'microsoft.jet.oledb.4.0' provider is not registered on the local machine
Вам необходимо зайти в настройки проекта и выставить Platform Target x86
Добавим кнопку, которая нам поможет внести изменения в базу.
Перетащим на Form1 Button, сделаем двойной клик мышью, на ней, и впечатаем следующий код в обработчике события
Теперь можно запускать наш проект, вносить изменения в данные и сохранять их.
Некоторые пояснения:
Первоначально, когда мы добавляем файл данных в проект - добавляется его копия, а оригинальный файл остается на своем месте, в неизменном состоянии.
То же самое происходит когда мы нажимаем ctrl + F5 в папку debug копируется копия уже скопированного в наш проект файла данных и если вы сделаете Rebuild проекта, то все изменения откатятся к первоначальному состоянию(так как файл в папку debug будет скопирован вновь из нашего проекта), но в релизной версии все будет работать превосходно.
Если у вас возникли проблемы по первой части, можете посмотреть видео, которое проходит все описанные выше шаги с применением Visual Studio 2010:
Часть 2
Где с помощью визуальных средств подключаем существующий файл без создания копии в проекте.
Создаем новый Windows Forms проект.
File → New → Project → Windows → Windows Forms Application и называем его VisualAccessConnectViaFilePath
Нажимаем View → Server Explorer или ctrl + W + L
Вызываем контекстное меню у Data Connections → Add Connection
В открывшемся окне нажимаем кнопку Change напротив DataSource
И выбираем Microsoft Access Database File
После чего выбираем путь к нашему файлу и проверяем соединение
Теперь добавляем на форму DataGridView, в его свойстве DataSource выбираем Add Project Data Source
Data Base → И в выпадающем меню выбираем строку подключения к нашему файлу, которую мы создали ранее, после чего появится предупреждение что файл базы находится вне приложения с предложением сделать копию, выбираем NO
После чего в открывшемся мастере выбираем таблицу People ( см часть1) и ОК
Так же добавляем кнопку для сохранения изменений, аналогично как и в первой части.
Теперь наше приложение отображает данные с текущего файла данных и изменяет его при сохранении.
Будьте внимательны при развертывании приложения, так как ответственность за путь к файлу данных лежит на ваших плечах.
Если у вас возникли проблемы по второй части, можете посмотреть видео, которое проходит все описанные выше шаги с применением Visual Studio 2010:
Часть 3
Чисто код.
Создадим консольное приложение.
File → New → Project → Windows → Console Application и назовем его AccessConnectPureCode
И полностью заменяем весь автоматически сгенерированный код на
Нужно проследить, чтоб строка подключения указывала на существующий файл.
Александр Кобелев aka Megano.
В своей работе я буду использовать Visual Studio 2008 Pro & C#
Довольно часто на форуме всплывает данный вопрос, по сему решил обобщить разрозненную информацию в данном сообщении.
Я покажу в трех частях как можно подключиться и взаимодействовать с файлом базы данных Access.
Часть 1 - Где с помощью визуальных средств добавляем к нашему проекту копию файла данных.
Часть 2 - Где с помощью визуальных средств подключаем существующий файл без создания копии в проекте.
Часть 3 - Чисто код.
Первоначально понадобится таблица с данными в файле Access.
Имя файла db1.mdb, таблица People c данными:
Код_People — Счетчик, Имя — Текст, ДатаРождения — Дата/Время
Скачать Access базу:
https://skydrive.live.com/?cid=3A4FDD8B3B890BE4&id=3A4FDD8B3B890BE4%21315
зеркало:
https://drive.google.com/folderview?id=0B1sG6jmDKzlvT2JQY0prWGNNelE
Часть 1
Где с помощью визуальных средств добавляем к нашему проекту копию файла данных.
Создаем новый Windows Forms проект.
File → New → Project → Windows → Windows Forms Application и называем его VisualAccessConnect
правой кнопкой мыши по проекту → Add → Existing Item... → В типах файлов выбираем Data Fiels → после чего находим наш db1.mdb и жмем ОК.
Автоматически открывается Data Source Configuration Wizard → Отмечаем, что мы хотим выбрать все таблицы.
Жмем Finish.
После чего у нас появляется в проекте строго типизированный DataSet содержащий в себе DataTable People и PeopleTableAdapter
Теперь добавляем на Form1 DataGridView
И в его свойстве DataSource выбираем нашу таблицу People
Все готово к отображению данных и при нажатии ctrl + F5 вы увидите такую картину:
Если у вас вывалилось исключение - the 'microsoft.jet.oledb.4.0' provider is not registered on the local machine
Вам необходимо зайти в настройки проекта и выставить Platform Target x86
Добавим кнопку, которая нам поможет внести изменения в базу.
Перетащим на Form1 Button, сделаем двойной клик мышью, на ней, и впечатаем следующий код в обработчике события
this.peopleTableAdapter.Update(this.db1DataSet.People);
Теперь можно запускать наш проект, вносить изменения в данные и сохранять их.
Некоторые пояснения:
Первоначально, когда мы добавляем файл данных в проект - добавляется его копия, а оригинальный файл остается на своем месте, в неизменном состоянии.
То же самое происходит когда мы нажимаем ctrl + F5 в папку debug копируется копия уже скопированного в наш проект файла данных и если вы сделаете Rebuild проекта, то все изменения откатятся к первоначальному состоянию(так как файл в папку debug будет скопирован вновь из нашего проекта), но в релизной версии все будет работать превосходно.
Если у вас возникли проблемы по первой части, можете посмотреть видео, которое проходит все описанные выше шаги с применением Visual Studio 2010:
Часть 2
Где с помощью визуальных средств подключаем существующий файл без создания копии в проекте.
Создаем новый Windows Forms проект.
File → New → Project → Windows → Windows Forms Application и называем его VisualAccessConnectViaFilePath
Нажимаем View → Server Explorer или ctrl + W + L
Вызываем контекстное меню у Data Connections → Add Connection
В открывшемся окне нажимаем кнопку Change напротив DataSource
И выбираем Microsoft Access Database File
После чего выбираем путь к нашему файлу и проверяем соединение
Теперь добавляем на форму DataGridView, в его свойстве DataSource выбираем Add Project Data Source
Data Base → И в выпадающем меню выбираем строку подключения к нашему файлу, которую мы создали ранее, после чего появится предупреждение что файл базы находится вне приложения с предложением сделать копию, выбираем NO
После чего в открывшемся мастере выбираем таблицу People ( см часть1) и ОК
Так же добавляем кнопку для сохранения изменений, аналогично как и в первой части.
Теперь наше приложение отображает данные с текущего файла данных и изменяет его при сохранении.
Будьте внимательны при развертывании приложения, так как ответственность за путь к файлу данных лежит на ваших плечах.
Если у вас возникли проблемы по второй части, можете посмотреть видео, которое проходит все описанные выше шаги с применением Visual Studio 2010:
Часть 3
Чисто код.
Создадим консольное приложение.
File → New → Project → Windows → Console Application и назовем его AccessConnectPureCode
И полностью заменяем весь автоматически сгенерированный код на
using System; using System.Data; using System.Data.OleDb; class AccessConnectPureCode { public static void Main() { string connectionString = @"provider=Microsoft.Jet.OLEDB.4.0; data source=C:\Data\db1.mdb"; OleDbConnection myOleDbConnection = new OleDbConnection(connectionString); OleDbCommand myOleDbCommand = myOleDbConnection.CreateCommand(); myOleDbCommand.CommandText = "SELECT * FROM People"; myOleDbConnection.Open(); // Считываем данные OleDbDataReader myOleDbDataReader = myOleDbCommand.ExecuteReader(); while (myOleDbDataReader.Read()) { Console.WriteLine(string.Format("Id: {0}, Name: {1}, Birthday: {2}", myOleDbDataReader["Код_People"], myOleDbDataReader["Имя"], myOleDbDataReader["ДатаРождения"])); } myOleDbDataReader.Close(); // Вносим изменения OleDbCommand changeDashaName = myOleDbConnection.CreateCommand(); changeDashaName.CommandText = @"UPDATE People SET Имя = 'Даша' WHERE Имя = 'Dasha'"; changeDashaName.ExecuteNonQuery(); myOleDbConnection.Close(); } }
Нужно проследить, чтоб строка подключения указывала на существующий файл.
Александр Кобелев aka Megano.