什么是用于为访问 mdb 文件创建 OdbcConnection 的连接字符串

本文关键字:OdbcConnection 连接 字符串 文件创建 mdb 用于 访问 什么 | 更新日期: 2023-09-27 17:56:16

我想使用 Odbc 从 c# 连接到 Access MDB 文件。

当我尝试执行时

OdbcConnection con = new OdbcConnection(
    "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:''temp''test.mdb;");

我得到以下异常:

exc {System.Data.Odbc.OdbcException (0x80131937): ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
   at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
   at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)
   at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.Odbc.OdbcConnection.Open()
   :

这里有什么问题?它抱怨"找不到数据源名称,未指定默认驱动程序",但我指定了驱动程序?

我从这里得到了连接绳 http://www.connectionstrings.com/access#net-framework-data-provider-for-odbc

什么是用于为访问 mdb 文件创建 OdbcConnection 的连接字符串

哦,我刚刚找到了问题的根源。我想其他人也可能会遇到它:

我正在编写一个 .net 应用程序,当操作系统为 32 位 Windows 时,该应用程序在 32 位 .net VM 中运行,当操作系统为 64 位 Windows 时,该应用程序在 64 位 vm 中运行。在 syswow 和 system32 中使用 2 odbcad32.exe(是的,两者都命名为 odbcad32.exe即使 system32 中的那个是 64 位的,是的,这也是正确的)我发现我只为 odbc32 位安装了访问 MdB 驱动程序。因此,当我的应用程序在 64 位 Windows 上运行时,.net 想要使用 64 位版本的 odbc 并且找不到驱动程序。

好的,所以现在我需要一个 64 位访问驱动程序,根据此处的输入链接描述,它不存在。好的,帖子很旧,所以也许现在存在一个?

当我在项目设置中强制将平台形式转换为 x86 时,它可以工作。当然,这也强制我的应用在 32 位 .net VM 中运行。

使用如下例的 Web 配置设置

<add      name="ODBCDataConnectionString"   connectionString="Driver=ODBCDriver;server=ODBCServer;"   providerName="System.Data.Odbc"   />

可以创建 udl 文件,创建连接,然后在记事本中打开该文件以查看连接字符串。 这在过去帮助了我——

http://msdn.microsoft.com/en-us/library/e38h511e%28v=vs.71%29.aspx

使用它,您可以像在 odbc 工具中一样创建一个常规连接并验证它是否有效。

希望有帮助。