c# - 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 相同的文件夹中的数据库中查找文件:
为什么命令对象会忽略其连接对象的属性并寻找错误的路径?
解决方案
检查您正在使用的 SQL 语句的实际值。它可能包含不同于您预期的另一个表名,例如由于字符串截断。
推荐阅读
- c++ - 如何做霍夫曼算法的内存实现?
- javascript - jQuery 更改选定值并根据 localStorage 值提交表单
- swift - 我如何从两个复选标记中选择一个?
- vim - 自动化 Vim 脚本以将文本写入文件
- laravel - 尝试使行按日期排序时结果不正确
- javascript - 通过与 https://localhost:3000 的混合内容的安全连接阻止了对地理位置的访问
- php - php中的二进制,为什么是63位?
- c# - CQRS - 在 C#、ASP.net Core 中使用 Mediatr 创建 BaseCommandHandler
- .net - Amazon Transcribe 流媒体服务
- xamarin.forms - Xamarin 表单:在 IOS 中安装键盘重叠插件后存在键盘重叠问题