Поставщик 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-разрядной ОС.
Весь ваш проект необходимо будет скомпилировать для платформы 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-разрядное приложение.