Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
将32位VB.Net连接到64位Access.ACCDB_.net_Vb.net_Ms Access - Fatal编程技术网

将32位VB.Net连接到64位Access.ACCDB

将32位VB.Net连接到64位Access.ACCDB,.net,vb.net,ms-access,.net,Vb.net,Ms Access,我有一个VB.net应用程序,我正在尝试升级以使用公司授权的64位Access.accdb数据源。我已尝试安装32位AccessDatabaseEngine.exe,但无法安装,因为计算机上安装了完整的64位Office。.Net应用程序将不会连接到64位ODBC DSN或ACE.OLEDB提供程序(表示未注册)。 由于包含一些自定义的32位DLL,我未能将此应用程序编译为x64应用程序 有没有办法让32位的.Net应用程序使用64位访问数据源?如果要使用ACE x64数据引擎,您必须将.Net

我有一个VB.net应用程序,我正在尝试升级以使用公司授权的64位Access.accdb数据源。我已尝试安装32位AccessDatabaseEngine.exe,但无法安装,因为计算机上安装了完整的64位Office。.Net应用程序将不会连接到64位ODBC DSN或ACE.OLEDB提供程序(表示未注册)。 由于包含一些自定义的32位DLL,我未能将此应用程序编译为x64应用程序


有没有办法让32位的.Net应用程序使用64位访问数据源?

如果要使用ACE x64数据引擎,您必须将.Net项目强制为x64位。在.net中,如果您选择“任意CPU”,那么在大多数情况下,您会得到一个x32位的进程。由于VisualStudio是x32位的,所以任何CPU或x86的设置都会导致x32位的运行进程

现在,如果您选择在x64尝试使用该组件时运行的任何CPU和其他windows进程,那么.net将使用并启动该.net项目或.dll作为进程内x64进程

然而,由于您首先启动了.net程序,因此您必须强制它以x64位运行,并且它应该可以正常工作


从个人计算机时代开始,你就无法混合使用不同的位大小的程序与另一个以不同位大小的程序运行的程序进行对话。尤其是在进程内使用.dll的情况下。如果要将ACE x64与.net一起使用,则只需确保并强制项目始终以x64位运行。因此,将项目设置设置为x64,不要使用x32或任何CPU。在大多数情况下,任何CPU都将作为x32位进程启动。此外,虽然在VisualStudio中,您可以使用各种连接字符串生成器来设置到ACE的连接,但是如果您点击“test connetion”,它将无法工作,因为VS是一个x32位的应用程序。因此,要实际测试是否可以连接,必须运行程序,因为VS构建器中的“测试连接”在开发过程中以x32位的形式运行

如果要使用ACE x64数据引擎,则必须将.net项目强制为x64位。在.net中,如果您选择“任意CPU”,那么在大多数情况下,您会得到一个x32位的进程。由于VisualStudio是x32位的,所以任何CPU或x86的设置都会导致x32位的运行进程

现在,如果您选择在x64尝试使用该组件时运行的任何CPU和其他windows进程,那么.net将使用并启动该.net项目或.dll作为进程内x64进程

然而,由于您首先启动了.net程序,因此您必须强制它以x64位运行,并且它应该可以正常工作


从个人计算机时代开始,你就无法混合使用不同的位大小的程序与另一个以不同位大小的程序运行的程序进行对话。尤其是在进程内使用.dll的情况下。如果要将ACE x64与.net一起使用,则只需确保并强制项目始终以x64位运行。因此,将项目设置设置为x64,不要使用x32或任何CPU。在大多数情况下,任何CPU都将作为x32位进程启动。此外,虽然在VisualStudio中,您可以使用各种连接字符串生成器来设置到ACE的连接,但是如果您点击“test connetion”,它将无法工作,因为VS是一个x32位的应用程序。因此,要实际测试是否可以连接,必须运行程序,因为VS构建器中的“测试连接”在开发过程中以x32位的形式运行

这回答了你的问题吗?在64位系统中安装32位ODBC驱动程序也是如此。无法使用64位应用程序中的64位驱动程序。您的应用程序真的需要32位吗?--没有Access 64/32位格式,无论安装了哪个版本的Office,文件都是相同的。如果你的应用程序必须是32位的,出于某种原因,你有两个提供商:
Microsoft.ACE.OLEDB.12.0
Microsoft.ACE.OLEDB.16.0
。查看安装了哪个提供程序,并安装另一个提供程序的32位版本。如果您的应用程序和访问驱动程序之间必须具有交叉位,则有另一种选择:编写一个与访问驱动程序具有相同位的进程外COM服务器,并使用进程外服务器与数据库通信。(COM服务器可以用VB.NET编写,到处都有微软的示例代码。)这能回答你的问题吗?在64位系统中安装32位ODBC驱动程序也是如此。无法使用64位应用程序中的64位驱动程序。您的应用程序真的需要32位吗?--没有Access 64/32位格式,无论安装了哪个版本的Office,文件都是相同的。如果你的应用程序必须是32位的,出于某种原因,你有两个提供商:
Microsoft.ACE.OLEDB.12.0
Microsoft.ACE.OLEDB.16.0
。查看安装了哪个提供程序,并安装另一个提供程序的32位版本。如果您的应用程序和访问驱动程序之间必须具有交叉位,则有另一种选择:编写一个与访问驱动程序具有相同位的进程外COM服务器,并使用进程外服务器与数据库通信。(COM服务器可以用VB.NET编写,到处都有Microsoft的示例代码。)找到自定义DLL的源代码并重新编译整个内容。找到自定义DLL的源代码并重新编译整个内容。