我在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相同的文件夹中的数据库中查找文件:
为什么命令对象忽略其连接对象的属性并在错误的路径中查找?
答案 0 :(得分:0)
检查所使用的SQL语句的实际值。它可能包含另一个表名称,而不是您期望的名称,例如由于字符串截断。