Поставщик microsoft.jet.OLEDB4 ​​не зарегистрирован на локальном компьютере

Я пытаюсь разработать своего рода приложение для Windows, используя Visual Studio 2013.

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

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)
        {
        }
    }

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

провайдер microsoft.jet.OLEDB4 ​​не зарегистрирован на локальном компьютере

Я буду признателен, если вы мне поможете?

4 ответа

Решение

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

Программирование данных с помощью Microsoft Access 2010

Описание: Узнайте, как разрабатывать как собственный (C, C++, Java, VBA), так и управляемый (C#, Visual Basic.NET) код доступа к данным с помощью Microsoft Office Access 2007 или Microsoft Access 2010. Узнайте об архитектуре Access, механизме ACE и поставщики данных, 32-разрядные и 64-разрядные платформы, а также вопросы, которые следует учитывать при выборе оптимальной технологии доступа к данным для нового или устаревшего проекта базы данных.

Относится к: Access 2007 | Access 2010 | Офис 2010


До Access 2007 Access использовал движок Microsoft Joint Engine Technology (JET). Несмотря на то, что JET обычно рассматривался как часть Access, механизм JET раньше был отдельным продуктом. Начиная с выпуска Microsoft Windows 2000, JET был включен в состав операционной системы Windows, а затем распространялся или обновлялся с помощью компонентов доступа к данным Microsoft (MDAC). Однако в выпуске Access 2007 механизм JET устарел и больше не распространяется с MDAC. Вместо этого Access теперь использует интегрированный и улучшенный механизм ACE, разработка которого началась с создания снимка кода исходной базы кода JET.


Важная связанная часть:

Поставщики ACE (ACE DAO, ACE OLE DB или ACE ODBC) для продукта Access 2007 доступны только в 32-разрядной версии. Поставщики ACE для продукта Access 2010 доступны в 32-разрядной и 64-разрядной версиях.

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

Для этого вам понадобится новая строка подключения, например 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.

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

Строка подключения будет:

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

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

Скачать драйверы Access

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

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

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

Другие вопросы по тегам