【发布时间】:2017-06-02 12:19:17
【问题描述】:
我正在尝试使用this code snippet 我收到以下错误消息:
System.Data.Odbc.OdbcException (0x80131937): ERROR [HY000] General error: Invalid file dsn ''
at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
at System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions)
at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection o
wningObject)
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 oldC
onnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnecti
onOptions userOptions)
at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.Odbc.OdbcConnection.Open()
代码,精简后是:
open System
open System.Data.Odbc
let connectToAccess filename =
let connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;FileDSN=" + filename + ";User Id=admin;Password=;"
new OdbcConnection(connectionString)
let connectToDb() =
let accessFile = Environment.CurrentDirectory + @"\folder\filename.accdb"
connectToAccess accessFile
let connection = connectToDb()
connection.Open()
我确实检查并验证了路径和文件名是否正确。我也试过:
- 相对路径
- 一个虚拟访问文件(以确保文件没有损坏)
- 较旧的 *.msb 文件
- 在终端运行代码
- 将代码作为可执行文件运行 - 确保路径仍然正常
【问题讨论】:
-
您是否尝试过硬编码完整的绝对路径,而不使用
Environment.CurrentDirectory? -
是的,我做到了。不过是个好主意。