无法使用 WinForms C# 应用程序打开 MDB (访问) 文件,即使它存在



使用以下代码:

OleDbConnection con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\MyFolder\MyFile.mdb");
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = sql;
con.Open();
recordsAffected = cmd.ExecuteNonQuery();
con.Close();

我得到以下错误:

类型为' system . data . oledb . oledbeexception '的未处理异常发生在System.Data.dll

附加信息:无法找到文件'C:MyFolderMyFile.mdb'.

这是在WinForms应用程序(c#)中。该文件存在于该文件夹中。我正在以管理员用户的身份运行应用程序。

仅供参考,当我尝试使用System.IO.File.Exists(@"C:MyFolderMyFile.mdb")时,它返回false,表示该文件不存在。但是,我可以在这个文件夹中看到mdb。

这个连接字符串应该可以工作:

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:MyFolderMyFile.mdb;Jet OLEDB:Database Password=");

问题发生了,因为我的SQL语法击中了Access DB。

如果您指定一个点语法(IE: SELECT * FROM [schemaname].[tableame]), OLEDB驱动程序将假定[schemaname]是MDB文件名,并将用该文件名替换连接字符串文件中指定的文件名/位置。

我的模式名称恰好与文件名完全相同,因此它试图在错误的位置找到MDB文件。

我所要做的就是修改我的查询SELECT * from [schemaname]。[tablename] to SELECT * FROM [tablename]一切正常

可能是它正在从我们的应用程序位置查找文件,例如/bin/debug调试您的连接对象以查看数据源路径,它将给您提示问题

相关内容

  • 没有找到相关文章

最新更新