使用以下代码:
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。
答案 0 :(得分:1)
此连接字符串应该有效:
OleDbConnection con = new OleDbConnection(@" Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\ MyFolder \ MyFile.mdb; Jet OLEDB:Database Password =");
答案 1 :(得分:1)
问题出现了,因为我的SQL语法正在访问Access数据库。
如果指定点语法(IE:SELECT * FROM [schemaname]。[tablename]),OLEDB驱动程序将假定[schemaname]是MDB文件名,并将替换在中指定的文件名/位置连接字符串文件。
我的架构名称恰好与文件名完全相同,因此它试图在错误的位置找到MDB文件。
我要解决的问题是将查询从 SELECT * FROM [schemaname]。[tablename] 更改为 SELECT * FROM [tablename] ,一切正常。
答案 2 :(得分:0)
可能是从应用程序位置查找文件/示例/ bin / Debug调试您的连接对象以查看数据源路径它将提供关于该问题的提示