【发布时间】:2011-04-18 18:46:47
【问题描述】:
我遇到了麻烦,因为我对使用具有 Microsoft 访问权限的 OleDb 非常生疏。我在命令中添加参数,然后执行查询,我得到“没有为一个或多个必需参数提供值。”
void LoadPositions(string accountKey, IEnumerable<Positions> positions)
{
OleDbCommand cmd1 = new OleDbCommand("delete from AccountPositions where BrokerAccountKey=?", conn, tran);
cmd1.Parameters.Add("?", OleDbType.VarChar).Value = brokerAccountKey;
cmd1.ExecuteNonQuery();
}
我束手无策...帮助别人!提前致谢。
【问题讨论】:
-
我似乎记得 MS Access 需要“DELETE * FROM ...”语法。 * 不是标准 SQL,但我认为 Access 需要它。另外,我对
cmd1.Parameters.Add( new OleDbParameter(...语法的运气更好。应该是一样的,但至少可以尝试不同的东西。 -
@Charlie Kilian Nope,从 ID=1 的表中删除工作正常。我认为这可能也是他的问题,所以不用担心:P
-
我看到您的参数名为
accountKey,但您使用的是brokerAccountKey。这可能只是因为您为 SO 示例减少了示例代码,但也可能是因为您在其他地方声明了 brokerAccountKey。可能是这个问题吗?更新:克里斯·巴克勒(Chris Buckler)的评论看起来很有希望。 -
值得注意的是,@Charlie,它们在功能上是等效的,我也尝试过你的方法。所有文档都表示简单的“?”查询中的问号,以及用于设置值的简单参数排序。它似乎不起作用!还有其他建议吗?
-
这就是问题所在,我实际上已经削减了代码,并且进一步修改了命令文本,使其具有一个带破折号的字段,但没有包含在 [] 符号中。通过错误消息很难辨别,但是根据您的一些建议,我偶然发现了解决方案。
标签: c# ms-access oledb oledbcommand