我想使用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
的帮助答案 0 :(得分:3)
哦,我刚刚找到问题的根源。我认为其他人也可能会遇到它:
我正在编写一个.net应用程序,当操作系统是32位Windows时运行在32位.net vm中,而当操作系统是64位Windows时运行在64位vm中。在syswow和system32中使用2 odbcad32.exe(是的,两者都被命名为odbcad32.exe,即使system32中的那个是64位,也是正确的)我发现我只为odbc32位安装了Access MdB驱动程序。因此,当我的应用程序在64位Windows上运行时,.net想要使用64位版本的odbc并且找不到驱动程序。
好的,现在我需要一个64位的访问驱动程序,根据这个enter link description here不存在。好的帖子很旧,所以也许现在有一个?
当我将项目设置中的Plattform强制为x86时,它可以正常工作。当然,这也迫使我的应用程序在32位.net vm。
中运行答案 1 :(得分:0)
使用网络配置设置,例如下面的示例
<add name="ODBCDataConnectionString" connectionString="Driver=ODBCDriver;server=ODBCServer;" providerName="System.Data.Odbc" />
答案 2 :(得分:0)
您可以创建一个udl文件,创建连接,然后在记事本中打开该文件以查看连接字符串。这帮助了我过去 -
http://msdn.microsoft.com/en-us/library/e38h511e%28v=vs.71%29.aspx
使用此功能,您可以像在odbc工具中一样创建常规连接,并验证它是否有效。
希望有所帮助。