如何解决在Visual Studio代码中将“ Microsoft.Jet.OLEDB.4.0”提供程序的目标设置为x86并未在本地计算机上注册错误
我是C#的新手,只需要使用它,因为我想读取一个非常老的MS Access 95数据库文件。
当我尝试读取mdb文件时,出现The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
错误。我通读了一些线程,知道这可能是因为我的OS是64位而驱动程序是32位。我还安装了更新的驱动程序,该驱动程序应支持32位和64位系统,但是我不知道安装后应该怎么做。
到目前为止,这是我的代码:
using System.Data.OleDb;
namespace Access_DB
{
class Program
{
public static void Main(string[] args)
{
//Console.WriteLine("\nWhat is your name? ");
ReadData("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\Users\\but\\Desktop\\Access-DB\\Test\\access","select * from summary_0199_550");
}
public static void ReadData(string connectionString,string queryString)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbCommand command = new OleDbCommand(queryString,connection);
connection.open();
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0].ToString());
}
reader.Close();
}
}
}
}``
I also read that I should force the application to run on 32 bit by setting the target to x86 in project properties,but I cannot find such an option in visual studio code. How do I change the target here?
解决方法
那么,鉴于这是一个mdb文件?然后使用JET,而不是较新的ACE。原因很多,但是一个很好的原因是,自Windows 98以来,每台计算机上都安装了JET。因此,您无需安装任何东西。
接下来,为什么不在VS中使用连接生成器?因此,在设置下,使用以下命令:
当您单击上面的[...]连接生成器时?你得到这个:
单击高级后,您就有机会选择喷气机或ACE。由于这是一个较旧的mdb文件,因此无需使用ACE。
因此,在高级上,您可以选择:
因此,在上面,您可以(并且应该)选择喷气式飞机。
现在,一旦完成以上所有操作? 当然您不会猜测, 当然,您没有运行代码, 当然,您花费了那巨大的5秒钟,然后单击“测试连接”按钮,对吗?
这个:
那么,您已经使用了测试连接,对吗?还是您如何测试此连接?
好,接下来: 将项目强制为x86。好吧,从Visual Studio启动时,“任何cpu”默认情况下都将以x32位运行(因为Visual Studio是x32位程序)。但是,是否从Windows命令提示符启动.exe?然后,您将获得一个x64位的进程内程序,并且无法使用JET。
所以,是的,您应该将项目强制为x86
来自VS的然后从中选择新内容:
现在,您有两个选择-“ any cpu”和x86。您肯定必须将这个项目强制为x86。
您现在在这里有选择
现在,如果mdb文件是2003年访问之后,那么您可能要选择ACE,但是再次使用连接生成器花费15秒并单击测试按钮将很快帮助您确定jet是否可以打开+使用文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。