OleDbCommand 使用错误的路径

OleDbCommand using wrong path

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

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

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