Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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
与Access数据库的C#连接失败。研究表明,64位项目支持32位访问,但解决方案没有';行不通_C#_Visual Studio_Ms Access - Fatal编程技术网

与Access数据库的C#连接失败。研究表明,64位项目支持32位访问,但解决方案没有';行不通

与Access数据库的C#连接失败。研究表明,64位项目支持32位访问,但解决方案没有';行不通,c#,visual-studio,ms-access,C#,Visual Studio,Ms Access,刚刚开始我的第一个关于VisualStuido 2019的C#项目。在Windows窗体上,我用Access Ace.Oledb.12连接字符串编写了一个小型连接程序。它不起作用 conn_string = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = c:\\DBase\\customer.accdb; Persist Security Info=False;"; oledbconnection conn = null; conn = ne

刚刚开始我的第一个关于VisualStuido 2019的C#项目。在Windows窗体上,我用Access Ace.Oledb.12连接字符串编写了一个小型连接程序。它不起作用

conn_string = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = c:\\DBase\\customer.accdb; Persist Security Info=False;";
oledbconnection conn = null;

conn = new oledbconnection(conn_string);
conn.open();

代码是基本的,因为我仍然是在这个环境中工作的新手。 唉,它没有起作用

我收到了错误信息 “您试图打开的数据库需要更新版本的Microsoft Access”

这里是Access 365

我在做研究,我的odbc访问驱动程序似乎只有32位 我添加了32位的活动解决方案配置x86,但它仍然不起作用

有没有办法解决这个问题

这似乎是一个荒谬的问题,尤其是对新办公产品的更新

谢谢


DamnGroundHog

在App.config文件中定义连接字符串

<configuration>
  <connectionStrings>
  <add name="DBCS" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Dbase\Customer.accdb"
    providerName="System.Data.OleDb" />
  </connectionStrings>
</configuration>
好的,有几个问题

您收到某种类型的格式错误是“奇怪的”。如果您的连接字符串正在使用JET,那么这将是有意义的。但是,由于是accDB格式,因此错误表明应用程序中嵌入了一些2010特性。这通常意味着2010年引入的新表触发器和存储过程可能是这里的问题(2007无法打开这些文件)

但是,请记住,在Access 2013年前后,当然是2016年,简单的Access安装不会将ACE数据引擎公开给外部使用(比如从.net)

喷气式发动机从未被要求安装,因为它包含在windows安装中,并且从windows 98天起就一直如此。因此,JET(仅mdb格式)从未要求您安装Access(完整或运行时),您甚至从未要求安装JET

然而,ACE数据引擎是另一回事。正如我指出的,自Access 2013年前后,安装Access(完整或运行时)不会安装您可以使用的ACE的“公开”和注册副本(例如从.net)。因此,您现在几乎“总是”必须安装ACE数据引擎。这一要求现在已经存在,并且在大约20年的使用中发生了变化。因此,现在安装Access不再提供第三方代码中可用的“ACE”数据引擎版本,也不再提供像.net这样的外部程序使用

因此,您必须在计算机上安装ACE

您可以在此处找到指向数据库引擎的链接:

从上面看,您希望安装适当的位大小。因此,ACE x32位或ACE x64位

如果您运行的是x86版本的office,那么将.net项目强制为x86是一个好主意

因此,就目前而言,仅安装Access将允许Access使用其ACE数据库引擎的副本,但是,此类安装“现在”不会安装ACE数据库引擎的公开副本,以便通过.net等外部代码系统使用

因此,您可以尝试一下上面的下载+安装

我还有一个非常小的.net程序,一个是x32,另一个是x64。您可以在此处找到链接:

解压缩这两个示例。您可以启动x32版本,并浏览到accDB文件–如果可以,该实用程序将打开并显示数据

看起来像这样:
您可以运行与x64位相同的示例,看看是否有效。如果两者都不起作用,则您没有安装可用版本的ACE。

在VS 2019和O365中对我起作用的是将Access数据库复制到具有.mdb扩展名的2000版本,然后修改连接字符串,如下所示

更改:

connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\ProductionData.accdb;Persist Security Info=True"
致:


不幸的是,在实现您请求的更改后,问题仍然存在,我收到了相同的错误消息。@DamnGroundHog Check out。因此,我进入了访问选项,通常默认的文件格式是Access2007-2016。此外,在当前数据库设置中,未单击“支持链接导入表的大数(BigInt)”选项。我的桌子上只选了一个号码。我认为这是因为创建数据库的时间早于最新的Office 365。还有其他方法可以检查BigInt吗?哇。谢谢你的帮助,我感谢你的帮助。事实上,我找到了另一个可行的方法,但我也会测试一下。我所做的是进入我的ODBC设置,对于Access,我选择创建,它允许我选择ACE 12.0作为驱动程序/引擎等。然后我将我的表复制到新的数据库中,它工作了。不幸的是,我被催促寻求解决办法。这是我下个星期度假回来后一定要尝试的东西。我找到了官方文档,其中描述了为什么会出现错误,并给出了相应的解决方案。
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\ProductionData.accdb;Persist Security Info=True"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\ProductionData.mdb;Persist Security Info=True"