C# OLEDB连接引发异常“;参数太少”;
我对Access数据库执行了以下C# OLEDB连接引发异常“;参数太少”;,c#,sql,ms-access,oledb,C#,Sql,Ms Access,Oledb,我对Access数据库执行了以下INSERT查询 using (var cmd = conn.CreateCommand()) { try { cmd.CommandText = @"INSERT INTO mtConcepts ( conceptid, [text],
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)
{
...
}
}
捕获到带有消息的OLEDBEException
参数太少。预期2
…我不明白为什么
这是大约7年前编写的代码,一直工作到。。。最近某个时候
此外,如果我没有参数化查询,而是直接在SQL中传递值,那么它就可以工作了
更新
我通过安装旧版本的来实现这一点。但是,我仍然感到困惑——在安装这个2010版本之前,我使用的是最新版本Access附带的连接(通过Office365安装),所以它应该仍然可以工作。就像帮助一样。我也遇到了同样的问题,所以我将参数名称改为问号 它工作得很好;例如:
OdbcCommand cmd=new-OdbcCommand(“从用户id=?和passwd=?”所在的用户中选择*,康涅狄格州);//*
cmd.Parameters.Add(新的OdbcParameter(“@UserID”,UserID));
cmd.Parameters.Add(新的OdbcParameter(“@Password”,Password));
OdbcDataReader=cmd.ExecuteReader();
谢谢你的建议,但这对我不起作用-同样的例外。