0

Я использую Visual Studio 2012 для создания веб-приложение, которое подключается к базе данных в Access 2013 с следующей строке программы:Что такое строка подключения OleDb для Access 2013?

string connectionString = "provider=Microsoft.ACE.OLEDB.12.0;" + "data source=" + Page.Server.MapPath("App_Data\\db1.accdb"); 

Но это не удалось запустить из-за ошибки

Microsoft.ACE.OLEDB.12.0 is not found in local machine

Что правильная строка подключения для Microsoft Access 2013?

+0

Вы подтвердили, что 'Page.Server.MapPath()' возвращает допустимый путь, потому что в противном случае эта строка подключения кажется прекрасной. Вы можете найти строки соединений [здесь] (http://www.connectionstrings.com). – BenFradet

+0

Это моя база данных, которую я уже проверяю. – wesleylim1993

+0

Я сделал другое изменение в своем ответе. –

ответ

4

Устройство, действующее как веб-сервер, должно иметь установленный «Microsoft Access Database Engine 2010». Если на этой машине не установлен Access, вы можете загрузить установщик для двигателя here.

Обратите внимание, что 64-разрядный установщик включает только 64-разрядную версию ; он не включает 32-битную версию (доступен отдельно на той же странице).

редактировать ...

Что касается строки соединения, я просто проверял следующий VBScript на моей машине Access_2013 и она работала хорошо.

Option Explicit 
Dim con, rst 
Set con = CreateObject("ADODB.Connection") 
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Gord\Desktop\Database1.accdb;Persist Security Info=False;" 
Set rst = CreateObject("ADODB.Recordset") 
rst.Open "SELECT Col1 FROM Table1", con 
Wscript.Echo rst(0).Value 
rst.Close 
Set rst = Nothing 
con.Close 
Set con = nothing 

Я скопировал строку соединения с connectionstrings.com.

редактировать ...

Если у вас есть доступ к веб-серверу, вы можете проверить наличие следующих двух файлов:

C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL 

C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL 

На 64-битной машине в первый файл указывает, что установлена ​​64-разрядная версия компонента Database Database Engine. На 32-битной машине это означает, что установлена ​​32-разрядная версия.

Если существует второй (x86) файл, то вы знаете, что 32-разрядная версия Database Database Engine присутствует на 64-разрядной машине.

редактировать Re: заключительный комментарий

Проблема действительно была связана с "разрядности" базы данных Access Engine:

i install "Microsoft Access Database Engine 2010" 64 bit i should install 32bit due to my visual studio is 32bit thanks for the advice

+0

благодарит за ваш ответ, но не работает над этим, она по-прежнему вызывает такую ​​же ошибку: Поставщик «Microsoft.ACE.OLEDB.12.0» не зарегистрирован на локальном компьютере. Знаете ли вы, что такое строковое соединение для Microsoft Access 2013? – wesleylim1993

+0

@ user712063 Я обновил свой ответ. –

+0

, если мои источники: string connectionString = "provider = Microsoft.ACE.OLEDB.12.0;" + "data source =" + Page.Server.MapPath ("App_Data \\ db1.accdb"); // создаем объект OleDbConnection для подключения к базе данных System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection (connectionString); Я должен изменить его на: – wesleylim1993

0

здесь использовать этот

provider=Microsoft.ACE.OLEDB.15.0

это строка подключения для доступа ms 2013

0

Это зависит от офиса, который вы установили, если у вас x64-разрядный офис, вы должны скомпилировать приложение как x64, чтобы он мог запускаться, поэтому, если вы хотите, чтобы он запускался на x36, вы должны установить офис x86 для принятия, i попробовал все решения выше, но никто не работал до тех пор, пока я не понял, что у меня был офис x64bit, и поэтому я создал приложение как x64 и работал.

Я также понял, что если поместить его в любой процессор, но не установлено предпочитают 32 бит работает

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