【发布时间】:2021-03-26 07:54:05
【问题描述】:
我正在对 Access DB 执行以下 INSERT 查询...
using (var cmd = conn.CreateCommand())
{
try
{
cmd.CommandText = @"INSERT INTO mtConcepts (
conceptid,
[text],
incomplete)
VALUES (
@conceptid,
@text,
false)";
cmd.Parameters.Add("@conceptid", OleDbType.BigInt).Value = concept.Id.Value;
cmd.Parameters.Add("@text", OleDbType.LongVarWChar).Value = cG.ToString(SaveOptions.DisableFormatting);
await cmd.ExecuteNonQueryAsync(cancellationToken).ConfigureAwait(false);
}
catch (AggregateException exception)
{
...
}
catch (OleDbException exception)
{
...
}
}
OleDbException 被消息捕获...
参数太少。预计 2。
...我不明白为什么。
这是大约 7 年前编写的代码,并且一直工作到……最近的某个时候。
此外,如果我不对查询进行参数化,而是直接在 SQL 中传递值,那么它就可以工作。
更新
我通过安装旧版本的 Microsoft Access Database Engine 2010 Redistributable 来实现这个功能。但是,我仍然感到困惑 - 在安装这个 2010 版本之前,我使用的是最新版本的 Access(通过 Office365 安装)附带的连接,所以它应该仍然可以工作。
【问题讨论】: