2015-05-05 4 views
2

Я пытаюсь разработать такую ​​форму приложения Windows, с помощью Visual Studio 2013.провайдер microsoft.jet.OLEDB4 ​​не зарегистрирован на локальном компьютере

В моем проекте у меня есть такой код, как это:

public class AccessFile 
{ 
    string strconnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=AccessTemp.mdb"; 
    private void InsertSellItems(List<TTMSModel> lstttms) 
    { 
     try 
     { 
      foreach (TTMSModel t in lstttms) 
      { 
       if (t.TypeMember == "حقیقی") t.TypeMember = "1"; 
       else 
       { 
        t.TypeMember = "2"; 
       } 
       OleDbConnection objconnection = new OleDbConnection(strconnection); 
       OleDbCommand objcommand = new OleDbCommand("INSERT INTO Foroush_Detail" + 
                  "(KalaKhadamatName,KalaCode,BargashtType,Price,MaliatArzeshAfzoodeh,AvarezArzeshAfzoodeh,HCKharidarTypeCode,KharidarPostCode,KharidarPerCityCode,KharidarTell,KharidarAddress,KharidarName,KharidarLastNameSherkatName,KharidarEconomicNO,KharidarNationalCode,HCKharidarType1Code,CityCode,stateCode,IsSent,Sarjam)" + 
                  "VALUES('فروش'," +"'0'"+",'0','"+t.PriceAmount+"','"+t.MayorAmount+"','"+t.TaxAmount+"','"+t.TypeMember+"','"+t.ZipCode+"','"+t.City+"','"+t.PhoneNumber+"','"+t.Address+"','"+t.Name+"','"+t.Name+"','"+t.EconomicNumber+"','"+t.IntNumber+"','2','"+t.City+"','"+t.Province+"','0','0')", 
                  objconnection); 
       objconnection.Open(); 
       objcommand.ExecuteNonQuery(); 
       objconnection.Close(); 
      } 
     } 
     catch (OleDbException a) 
     { 
     } 
    } 

Так что все работает нормально. Моя операционная система - 64-разрядная Windows 7. Так что, когда я пытаюсь запустить этот код, я получаю эту ошибку:

the microsoft.jet.OLEDB4 provider is not registered on the local machine

Я буду признателен, если дать мне некоторую помощь?

+0

Дубликат: http://stackoverflow.com/q/1991643/1070452 – Plutonix

ответ

3

Если ваша версия Microsoft Access является 2003, пожалуйста, обновить его до более новой версии и читать ниже статьи -I добавить резюме этих цен ниже.

Data Programming with Microsoft Access 2010

Summary: Learn how to develop either native (C, C++, Java, VBA) or managed (C#, Visual Basic.NET) data access code with Microsoft Office Access 2007 or Microsoft Access 2010. Learn about the Access architecture, the ACE engine and data providers, 32-bit and 64-bit platforms, and what things to consider when you choose an optimal data access technology for your new or legacy database project.

Applies to: Access 2007 | Access 2010 | Office 2010


Prior to Access 2007, Access used the Microsoft Joint Engine Technology (JET) engine. Even though JET was generally seen as part of Access, the JET engine used to be a separate product. Since Microsoft Windows 2000 release, JET was included as part of the Windows operating system and then distributed or updated with the Microsoft Data Access Components (MDAC). However, with Access 2007 release the JET engine was deprecated and is no longer distributed with MDAC. Instead, Access now uses an integrated and improved ACE engine whose development started by taking a code snapshot of the original JET code base.


Важным родственный часть:

The ACE providers (ACE DAO, ACE OLE DB or ACE ODBC) for Access 2007 product are available only in 32-bit. The ACE providers for Access 2010 product are available in both 32-bit and 64-bit editions.

Знание того, что вам нужен поставщик ACE для Access 2010.

Для использования, что вам нужен новый connection string как для Access 2010:

Стандартная безопасность

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb; 
Persist Security Info=False; 

с паролем базы данных

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb; 
Jet OLEDB:Database Password=MyDbPassword; 

Загрузить его можно с Microsoft Access Database Engine 2010 Redistributable.

0

Для параметра «Включить 32-разрядные приложения» установите значение «Истина» в «Дополнительные настройки пула приложений».

1. -Открыть IIS 2. -изменить appPool на дополнительных настройках 3.-true включить 32-битное приложение.

+0

Как найти дополнительные параметры для пула приложений.? –

+0

У меня нет установленной iis на моей локальной машине, мой проект - это форма окна, а не webform !!!! –

+0

Else try this Project ---> Свойства ---> Build ---> Target Framework ---> X64 – BSG

2

Весь проект должен быть скомпилирован для платформы x86. Необходимые сборки для баз данных Microsoft Jet (поставщик Microsoft.Jet.OLEDB) доступны только для 32-разрядных . Там просто (и, согласно Microsoft, никогда не будет) 64-разрядной версии. Вот почему ваше приложение не может найти Microsoft.Jet.OLEDB при компиляции для x64. Единственный способ получить эту работу - переключить приложение (и все зависимые сборки) на 32-разрядную (платформа x86).

3

Используйте Accdb вместо mdb и установите 64-битные драйверы из этого места.

Строка соединения будет:

"Provider=Microsoft.ACE.OLEDB.12.0; Data Source= yourdbname ;Jet OLEDB:Database Password=yourpassword;" 

Вам необходимо установить 64-битные драйверы на 64-битных ОС и 32-битных драйверов на 32-битных ОС.

Download Access drivers

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