我正在尝试使用Visual Studio 2013开发一种Windows Form应用程序。
在我的项目中,我有这样的代码:
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提供商未在本地计算机上注册
如果给我一些帮助,我将不胜感激?
如果您的Microsoft Access版本为2003,请将其升级到较新版本,并在下面阅读文章 - 我在下面添加了摘要 - 。
- MSDN Source
Microsoft Access 2010
的数据编程摘要:学习如何开发本机(C,C ,Java,VBA)或托管(C#,Visual Basic.NET)数据访问代码,该数据访问代码使用Microsoft Office Access 2007或Microsoft Access 2010。了解访问体系结构,ACE引擎和数据提供商,32位和64位平台,以及在选择新的或传统数据库项目的最佳数据访问技术时要考虑的内容。
适用于:访问2007 |访问2010 |办公室2010
在访问2007年之前,访问使用了Microsoft联合发动机技术(JET)发动机。即使Jet通常被视为通道的一部分,但喷气发动机曾经是单独的产品。由于Microsoft Windows 2000版本,JET作为Windows操作系统的一部分包括在内,然后与Microsoft Data Access组件(MDAC)分发或更新。但是,随着Access 2007释放,喷气发动机已弃用,不再与MDAC分发。取而代之的是,Access现在使用了集成和改进的ACE引擎,其开发开始于使用原始喷气代码基础的代码快照。
重要的相关部分是:
用于Access 2007产品的ACE提供商(ACE DAO,ACE OLE DB或ACE ODBC)仅在 32-bit 中可用。Ace 2010产品的ACE提供商可在 32-bit 和 64位 Editions中获得。
知道您需要一个ACE提供商来访问2010年。
用于使用您需要一个新的连接字符串,例如for Access 2010:
标准安全
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:myFoldermyAccessFile.accdb;
Persist Security Info=False;
使用数据库密码
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:myFoldermyAccessFile.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位OS上安装64个位驱动程序,在32位OS上安装32位驱动程序。
下载访问驱动程序
您的整个项目必须设置为x86平台。Microsoft Jet数据库(Microsoft.jet.oledb提供商)的所需组件可用于32位唯一的。只有(并且根据微软永远不会有)没有64位版本。这就是为什么您的应用程序无法在x64编译时找到Microsoft.jet.oledb的原因。完成此工作的唯一选择是将您的应用程序(和所有因组件)切换到32位(X86平台)。
只是"启用32位应用程序"设置为true,在应用程序池的高级设置中。
1.开放IIS 2.在高级设置上更改AppPool 3.-True启用32位应用程序。