OleDbCommand使用错误的路径

时间:2018-07-11 09:00:57

标签: c# wpf ado.net oledbconnection

我在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相同的文件夹中的数据库中查找文件:

enter image description here

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

1 个答案:

答案 0 :(得分:0)

检查所使用的SQL语句的实际值。它可能包含另一个表名称,而不是您期望的名称,例如由于字符串截断。