2016-08-18 4 views
1

фон«Microsoft.ACE.OLEDB.12.0” не распознается в Windows 10

Я занимаюсь разработкой приложений для Windows Form, который подключается к базе данных Microsoft Access.

Это пример кода, который Я использую в разработке:

try 
{ 
    string AccessFilePath = @"\.myDataBase.mdb"; // Path of the Access database. 
    string sqlStatement = "SELECT * FROM myTable WHERE IdTable = 5;"; 
    string connstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + AccessFilePath; 
    OleDbConnection conn = new OleDbConnection(connstr); 
    OleDbCommand cmd = new OleDbCommand(); 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = sqlStatement; 
    cmd.Connection = conn; 
    conn.Open(); 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 
} 
catch (Exception ex) 
{ 
    MessageBox("Error: " + ex.Message); 
} 

следующий список описывает среду моего развития:

  • Visual Studio 2015 Community
  • Решение создано в Framework .NET 4.0
  • Операционная система: Windows 10 Pro - 64 бит.
  • Эта разработка должна работать на Windows XP, Windows 7 и более поздних версиях.

Я уже установил:

Вопросы

В моем компьютере , который имеет Windows 10 Pro OS, я ищу в C:/ жесткого диска, и я обнаружил, что ACEOLEDB.DLL уже установлен в следующих местах:

Это перед тем установка компонентов подключения данных:

- C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16 
- C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15 
- C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14 

Нажмите, чтобы увеличить изображение:

Previous to install Data Connectivity Components

Когда я установил компонент связности данных в моем ПК, ACEOLEDB.DLL расположен по адресу:

- C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared 

Я действительно не знаю, почему даже после установки компонентов подключения данных Я все еще получаю эту ошибку:

"The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine"


Вопросы

  • Как компоненты подключения данных обрабатываются в ОС?
  • Как правильно утверждать, если в ОС установлены компоненты подключения к данным?
+1

Платформа Цель: x86? – LarsTech

+0

@LarsTech находится в _Any CPU_ –

+0

Измените его на x86. – LarsTech

ответ

1

После изменения Platform Target на x86, как пользователь LarsTech предложил в своем comment, в конечных пользователей машин , которая имеет операционную систему Windows 7 и не офисный пакет установлен. Он работал правильно.

Я, хотя этого изменения было бы достаточно, но по какой-то неизвестной причине на моем ПК этого не было.

Итак, мне нужно снова исследовать, и я нашел аналогичную проблему here.

Обходной в данной конкретной ситуации является установка:

Microsoft Access 2010 Runtime

В моем случае следующее ACEOLEDB.DLL записи были созданы:

- C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE12 
- C:\Windows\Installer\$PatchCache$\Managed\00004109C10000000000000000F01FEC\14.0.4763 

I th что последняя запись была создана установкой Runtime 2010 года.

Смежные вопросы