首页 > 解决方案 > OleDbCommand 使用错误的路径

问题描述

我在 WPF 应用程序中有以下 c# 代码:

var command = new OleDbCommand($"CREATE INDEX idx{index.ColumnName} ON {tableConfig.Name}({index.ColumnName})", _targetCon);
                    try
                    {
                        command.ExecuteNonQuery();
                    }
                    catch (Exception ex1) { _serilog.WriteError(METHOD_NAME, "Trouble adding index onto Access column", ex1); }

我的问题是,在 VS 调试器中单步执行代码时,“command.ExecuteNonQuery();”行 正在引发异常。异常时,_targetCon.ConnectionString"Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\AccessDatabases\APMS\unit3.mdb;"的值为,_targetCon.DataSource 的值为:C:\AccessDatabases\APMS\unit3.mdb这是正确的路径。但是, ex2.Message 的值是"Could not find file 'C:\Git_RB\AccessMigration\AccessLauncher\AccessLauncher.WPF\bin\Debug\Unit3.mdb'"

如果我在 VS 之外运行应用程序,那么我发现它仍在尝试在与 exe 相同的文件夹中的数据库中查找文件:

在此处输入图像描述

为什么命令对象会忽略其连接对象的属性并寻找错误的路径?

标签: c#wpfado.netoledbconnection

解决方案


检查您正在使用的 SQL 语句的实际值。它可能包含不同于您预期的另一个表名,例如由于字符串截断。


推荐阅读