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 名称而不是您期望的名称,例如由于字符串截断。
我在 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 名称而不是您期望的名称,例如由于字符串截断。