【问题标题】:Can't open MDB (Access) file using WinForms C# app even though it exists即使存在,也无法使用 WinForms C# 应用程序打开 MDB (Access) 文件
【发布时间】:2023-03-03 09:51:01
【问题描述】:

使用下面的代码:

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.OleDbException”类型的未处理异常 发生在 System.Data.dll

附加信息:找不到文件“C:\MyFolder\MyFile.mdb”。

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

仅供参考,当我尝试使用 System.IO.File.Exists(@"C:\MyFolder\MyFile.mdb") 时,它返回 false,说明该文件不存在。不过,我可以在这个文件夹中看到 mdb。

【问题讨论】:

  • 你的连接字符串对吗? connectionstrings.com/access-2000
  • 我改为 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\MyFolder\\MyFile.mdb;User Id=admin;Password=; ");仍然得到同样的错误。
  • 真的是.mdb吗?还是 .accdb?
  • 它的 mdb。我之前检查了其他链接。即使我将 mdb 放入该链接建议的本地文件夹中,它也不起作用。

标签: c# winforms oledb oledbconnection oledbcommand


【解决方案1】:

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

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyFolder\MyFile.mdb;Jet OLEDB:Database Password=");

【讨论】:

  • 很遗憾,这不起作用。它仍然说它找不到 mdb 文件,即使我可以在文件夹中看到它。
【解决方案2】:

问题是由于我的 SQL 语法触及 Access DB 造成的。

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

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

解决这个问题我所要做的就是将我的查询从 SELECT * FROM [schemaname].[tablename] 更改为 SELECT * FROM [tablename] 和一切正常。

【讨论】:

    【解决方案3】:

    可能是它正在从您的应用程序位置查找文件以获取示例 /bin/Debug 调试您的连接对象以查看数据源路径,它将为您提供有关问题的提示

    【讨论】:

    • 我已经调试检查路径和连接设置正确
    • 什么是操作系统,它是 64 位还是 32 位 检查驱动程序您的使用问题可能是由于两个原因,第一个应用程序在错误的位置查找文件,尽管文件路径似乎正确,而您使用的第二个驱动程序无法识别您的mdb 文件,因为第一种情况没问题,它应该是驱动程序所有编码对我来说似乎都是正确的
    • 谢谢,这与实际问题最接近。我在回答中解释的路径错误
    • 很高兴你知道了!
    猜你喜欢
    • 2020-06-06
    • 2021-05-20
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    相关资源
    最近更新 更多