Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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# 在wpf应用程序中访问mdb文件_C#_Wpf_Ms Access - Fatal编程技术网

C# 在wpf应用程序中访问mdb文件

C# 在wpf应用程序中访问mdb文件,c#,wpf,ms-access,C#,Wpf,Ms Access,我们在wpf项目中使用access file.mdb文件,该文件是在ms access 97之间创建的 它会出现异常,如“无法打开数据库“”。它可能不是应用程序识别的数据库,或者文件可能已损坏。” 但并非总是只有在使用适配器调用查询时才会出现此异常,如: tblAccountTableAdapter accountAdapter = new tblAccountTableAdapter(); DateTime? syskey = accountAdapter.GetSys

我们在wpf项目中使用access file.mdb文件,该文件是在ms access 97之间创建的

它会出现异常,如“无法打开数据库“”。它可能不是应用程序识别的数据库,或者文件可能已损坏。”

但并非总是只有在使用适配器调用查询时才会出现此异常,如:

tblAccountTableAdapter accountAdapter = new tblAccountTableAdapter();
            DateTime? syskey = accountAdapter.GetSysKeyofAccount(accountNumber);
连接字符串:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Data\mmlp.mdb;Persist Security Info=True
从上面的查询调用“getsyskeyofcount()”时,它会给出上面的异常,有时它会给出另一个查询,所以它不会只使用一个查询来给出异常

我试了很多次来寻找这个问题,很难找到在不同的地方有例外的地方

我的文件只有KB大小,所以任何人都可以帮我

谢谢,
nag

根据运行它的机器和您尝试连接的MDB版本,您可能会更好地使用ACE驱动程序(或者,它们实际上可能是您唯一的选择)

JET 4.0驱动程序仅允许您读取Office 2003之前(含2003)的Office格式。对于Office2007及以上版本,您需要使用ACE驱动程序

也没有64位JET驱动程序,这可能是您无法使用JET连接的另一个原因

但是,有32位和64位ACE驱动程序,它们是向后兼容的

可在以下位置找到驱动程序:

下面详细介绍要使用的连接字符串:

您应该显示您的连接字符串。@若要回答,请检查我用连接字符串编辑的上述问题。听起来您的连接字符串是正确的。所以我想你们对Ms Access文件的大小有问题,它可能会达到Ms Access的限制。您应该检查文件大小是否达到2GB的限制,请将其压缩。仅供参考,您可以在这里查看:@ToanVo No正如我在问题中提到的,大小仅为KB,虽然我在过去遇到过您描述的问题,但错误消息绝不是关于无法读取的文件,但是总是关于没有安装JET驱动程序…可能是因为他们在64位环境中运行,但是安装了32位JET吗?是的,这是我的情况。在Windows 7 64计算机上运行64位/任何体系结构应用程序时,我总是遇到一个错误,即JET驱动程序未安装,直到将其更改为仅32位或安装64位驱动程序。我从未收到过“无效文件”错误。可能是数据库是Access 2007数据库,JET无法打开(它只能打开Access 2003格式)。请参见问题的第一行。