Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Visual Studio 2010 (C#): ADO .NET - подключение к БД Access 2010

9.7K
22 марта 2011 года
Vitamant
228 / / 07.02.2011
Доброго времени суток!

Возникла необходимость поработать с базой Access. В процессе возникли сложности.
Лезу в Данные->Добавить новый источник данных->База данных->Набор данных->Создать подключение
Источником выбираю Файл БД Access.
Указываю файл БД.
В дополнительных параметрах проверяю драйвер - Microsoft.ACE.OLEDB.12.0. Еще есть Microsoft.Jet.OLEDB.4.0.
Жму "Ок", получаю ошибку:
Цитата:
Поставщик "Microsoft.ACE.OLEDB.12.0" не зарегистрирован на локальном компьютере.



Лезу в Администрирование->Источники данны (ODBC)->Драйверы.
А у тамошнего Microsoft Access Driver версия 14! Но в VS он не отображается - почему? Это первый вопрос.

Двигаемся дальше. На закладке пользовательских интерфейсов создаю новый источник данных. В дополнительных параметрах указываю драйвер - Microsoft.ACE.OLEDB.14.0, задаю путь к файлу. Пытаюсь подключиться в VS, исопльзуя его.

Получаю:

Цитата:
ERROR [IM014] [Microsoft][Диспетчер драйверов ODBC] В указанном DSN архитектура драйвера и архитектура приложения не соответствуют друг другу.



OS: Windows 7 x64
Параметры сборки: для x64
На машине установлен Office 2010 с 98% вероятностью также x64.
Для верности поверх всего этого ставился AccessDatabaseEngine_x64 2010 (правда, его эффекта я не заметил - список провайдеров не изменился, или он включает в себя только последнюю версию? и если да, то переписалась ли она, или нужно сносить оффис, потом ставить ее и потом снова оффис?)

И в заключение:
1) Беглый поиск по гуглу выдал море решенных и нерешенных проблем, связанных с подключением к базам Access 2007, 2010.
2) Подключение в VS требовалось только для построения объектной модели - никогда прежде этого не делал.
3) Программа будет выполняться на машинах с WinXP и Win7. Как на x86, так и на x64. С установленным Office 2003, 2007, 2010 или без него.
4) И все это как-то должно работать.

В связи с этим, прошу знатаков помочь. Возможно ли решить эту проблему, и из-за чего она возникла? Надо ли ее решать вообще? БД должна быть в виде файла и открываться без SQL-сервера, при этом accdb - лишь вариант. Подойдет любая другая независимая БД. Достаточно шустрая и имеющая возможность хранить в себе значительные объемы данных. И, наконец, все это должно легко и непринужденно распространяться на другие машины с установленным .NET 4.0. Если поптуно нужно будет установить AccessDatabaseEngine - не беда, хотя и не желательно. Но без плясок с бубном вокруг переустановки оффиса и прочих приложений.

Буду благодарен за любую помощь. Дельные советы приветствуются!

9.7K
31 марта 2011 года
Vitamant
228 / / 07.02.2011
Молчат, злодеи! :(
Попутно выяснил, что я балбес (искал OleDB провайдеры в списке драйверов ODBC). Дальше все было просто, соединение установить удалось. Попробую теперь подключить BLToolkit. Но вот вопрос - по прежнему не могу подключить источник к Visual Studio! Беру ту же строку соединения. А в результате - ошибка архитектуры. Хотя в свойствах указана сборка под х64. =\
242
01 апреля 2011 года
Оlga
2.2K / / 04.02.2006
простите, просто трудно ответить, ну нет таких проблем, тем более c ACCESS. зашла сейчас в экспрес студию, другой нету, за считанные минуты подключилась к БД, взяла готовую, ее как пример с VS поставляют. ну нету проблем с этой БД, сорри, сделала все как вы написали.
9.7K
02 апреля 2011 года
Vitamant
228 / / 07.02.2011
Печально. =\
Что ж, придется обходиться без ADO .NET.
BLToolkit сразу подключился, без проблем увидел этот самый Microsoft.ACE.OLEDB.12.0 и вывел результаты запроса к базе. Мистика. Что ж, буду пользовать его.

Оlga, спасибо за попытку помочь. :)
5
02 апреля 2011 года
hardcase
4.5K / / 09.08.2005
А разве процесс Vs2010 (devenv.exe) - x64?
20K
05 апреля 2011 года
sem2711
124 / / 23.09.2009
Попробуйте в качестве провайдера доступа указать Microsoft.Jet.OLEDB.4.0. Мне несколько раз приходилось работать с Access, все отлично было (насколько вообще в Access может быть отлично). Правда, строка подключения создавалась не через визуальные средства VS2010, а руками в App.config или через ConnectionStringBuilder.
64K
08 февраля 2012 года
temalaner
4 / / 20.10.2010
Цитата:
namespace Зарплята
{
public partial class Form1 : Form
{
OleDbConnection connect = new OleDbConnection(); // создаем обьект соединения
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e) /// загрузка формы на экран
{
connect.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Начисление_зарплаты_2003.mdb"; // строка с параметрами соединения
connect.Open(); // открваем соединение
ReadData();
}

public void ReadData() /// метод вычитывает данные из БД
{
OleDbCommand command = new OleDbCommand("SELECT Sotrudniki.Tab_nom,Sotrudniki.LastName,Sotrudniki.FirstName,Sotrudniki.SureName FROM Sotrudniki WHERE Sotrudniki.id, connect);
OleDbDataReader reader = command.ExecuteReader(); // создаем обьект чтения =
while (reader.Read() != false)
{
ListViewItem item = listView1.Items.Add(new ListViewItem());
item.Text = (reader.GetInt32(reader.GetOrdinal("Tab_nom"))).ToString();
item.SubItems.Add(reader.GetString(reader.GetOrdinal("LastName")));
item.SubItems.Add(reader.GetString(reader.GetOrdinal("FirstName")));
item.SubItems.Add(reader.GetString(reader.GetOrdinal("SureName")));
}
reader.Close();
}



Microsoft.Jet.OLEDB.4.0 -стандартная майкросовская , еще неустановленный оффисы база открываются =)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог