Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# microsoft.jet.OLEDB4提供程序未在本地计算机上注册_C#_Winforms_Ms Access_Ado.net_Oledbconnection - Fatal编程技术网

C# microsoft.jet.OLEDB4提供程序未在本地计算机上注册

C# microsoft.jet.OLEDB4提供程序未在本地计算机上注册,c#,winforms,ms-access,ado.net,oledbconnection,C#,Winforms,Ms Access,Ado.net,Oledbconnection,我正在尝试使用Visual Studio 2013开发一种Windows窗体应用程序 在我的项目中,我有这样一个代码: public class AccessFile { string strconnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=AccessTemp.mdb"; private void InsertSellItems(List<TTMSModel> lstttms ) {

我正在尝试使用Visual Studio 2013开发一种Windows窗体应用程序

在我的项目中,我有这样一个代码:

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)
        {
        }
    }
公共类访问文件
{
字符串strconnection=@“Provider=Microsoft.Jet.OLEDB.4.0;数据源=AccessTemp.mdb”;
私有void InsertSellItems(列表LSTTMs)
{
尝试
{
foreach(LSTTMS中的TTMSModel t)
{
如果(t.TypeMember==“1”;
其他的
{
t、 TypeMember=“2”;
}
OLEDB连接对象连接=新的OLEDB连接(strconnection);
OleDbCommand objcommand=新的OleDbCommand(“插入到Foroush_详细信息中”+
(KalaKhadamatName、KalaCode、BargashtType、Price、MaliatArzeshAfzoodeh、AvarezazhafZoodeh、HCKharidarTypeCode、KharidarPostCode、KharidarPerCityCode、KharidarTell、KharidarAddress、KharidarName、KharidarLastNameSherkatName、KharidarEconomicNO、KharidarNationalCode、HCKharidarType1Code、CityCode、stateCode、Isent、Sarjam)+
“价值观”方面,以及“0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“,‘0’”,
对象连接);
objconnection.Open();
objcommand.ExecuteNonQuery();
objconnection.Close();
}
}
捕获(OLEDBEException a)
{
}
}
所以一切正常。我的操作系统是Windows 7 64位。因此,当我尝试运行此代码时,会出现以下错误:

microsoft.jet.OLEDB4提供程序未在本地计算机上注册

如果能给我一些帮助,我将不胜感激。

只需在应用程序池的高级设置中将“启用32位应用程序”设置为True即可

1.开放IIS 2.-更改应用池的高级设置
3.-如果启用32位应用程序,则为true。

您的整个项目必须设置为针对x86平台进行编译。Microsoft Jet数据库所需的程序集(Microsoft.Jet.OLEDB provider)仅适用于32位。确实存在(根据Microsoft的说法,永远不会有)没有64位版本。这就是应用程序在为x64编译时无法找到Microsoft.Jet.OLEDB的原因。要使其正常工作,您唯一的选择是将应用程序(以及所有相关程序集)切换到32位(x86平台)。

使用Accdb而不是mdb,并从此位置安装64位驱动程序

连接字符串将为:

"Provider=Microsoft.ACE.OLEDB.12.0; Data Source= yourdbname ;Jet OLEDB:Database Password=yourpassword;"
您需要在64位操作系统上安装64位驱动程序,在32位操作系统上安装32位驱动程序


如果您的Microsoft Access版本是2003,请将其升级到较新版本,并阅读下面的文章-我将其摘要添加到下面-

使用Microsoft Access 2010进行数据编程

<强>摘要:< /Stuti>学习如何开发本机(C、C++、java、VBA)或托管的(C语言,Visual Basic .NET)使用微软Office Access 2007或微软Access 2010的数据访问代码。了解访问体系结构、ACE引擎和数据提供者、32位和64位平台,以及当您为新的或遗留的数据库项目选择最佳数据访问技术时要考虑的事项。< /P> 适用于:Access 2007 | Access 2010 | Office 2010


在Access 2007之前,Access使用Microsoft联合引擎技术(JET)引擎。尽管JET通常被视为Access的一部分,但JET引擎过去是一个单独的产品。自Microsoft Windows 2000发布以来,JET作为Windows操作系统的一部分,然后使用Microsoft数据访问组件(MDAC)进行分发或更新。但是,Access 2007版本的JET引擎已被弃用,不再与MDAC一起分发。相反,Access现在使用一个集成的、经过改进的ACE引擎,该引擎的开发是从拍摄原始JET代码库的代码快照开始的


重要的相关部分是:

Access 2007产品的ACE提供程序(ACE DAO、ACE OLE DB或ACE ODBC)只有32位版本。Access 2010产品的ACE提供程序有32位和64位版本

知道Access 2010需要ACE提供商。

要使用此功能,您需要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;

从下载。

如何找到应用程序池的高级设置。?我的本地计算机中没有安装任何iis,我的项目是windows窗体而不是webform!!!!否则请尝试此项目-->属性-->构建-->目标框架-->X64Goto菜单工具、选项,选择项目和解决方案,检查显示高级构建配置现在,在“构建”菜单中,您可以转到Cofig管理器并将输出设置为x86。我的项目具有多个解决方案,如存储库、domainclass和…我的所有项目都应更改为x64副本: