Acess SQL查询缺少更多必需参数

A. *_*mov 6 c# sql ms-access

在Web项目中,我正在尝试执行以下查询:

SELECT ItemName as Name,
       ItemPicture as Picture,
       ItemHeroModif as Assistance,
       ItemTroopModif as Charisma,
       HerbCost as Herbs,
       GemCost as Gems
FROM Item WHERE ItemId = @value0
Run Code Online (Sandbox Code Playgroud)

有了断点,我可以看到我附加@value0了值,2.

尽管如此,我收到以下错误:

没有给出一个或多个必需参数的值.

我知道这个错误通常是由于错误的SQL语法而产生的.我做了什么有什么不对吗?

编辑:

附件代码:

var madeForCommand = "SELECT ItemName as Name,ItemPicture as [Picture],ItemHeroModif as Assistance,ItemTroopModif as Charisma, HerbCost as Herbs, GemCost as Gems FROM Item WHERE ";
OleDbCommand command = new OleDbCommand();
for (int ii = 0; ii < items.Count; ii++)// items is a list of items with IDs I want to get from the query.
{
    madeForCommand += "ItemId =@value"+ii+" OR ";   
}
madeForCommand = madeForCommand.Substring(0, madeForCommand.Length - 4); // making sure I trim the final or; In the case I shown, it's just one item, so there are none at all.
Run Code Online (Sandbox Code Playgroud)

后来:

OleDbCommand forOperations = new OleDbCommand(madeForCommand, _dbConnection); //_dbConnection is the connection to the database, it seems to work pretty well.
for (int ii = 0; ii < items.Count; ii++) 
{
    string attach = "@value" + ii;
    command.Parameters.AddWithValue(attach, items[ii].ID);
}
Run Code Online (Sandbox Code Playgroud)

我很确定没问题items[ii].ID,断点显示它等于2并且附件顺利.

编辑2:我已经将代码编辑为Krish和Hans建议我,并且我得到以下查询而没有任何附件:@value0.如果它改变了什么,我仍然会得到同样的错误.

编辑3:在Access中执行查询要求我给参数"ItemPicture"赋值...奇数; ItemPicture是一个专栏,不是吗?

Han*_*sUp 3

NameItem、 和Picture是A​​ccess 查询中的问题词。将它们括在方括号中:

SELECT ItemName as [Name], ItemPicture as [Picture], ItemHeroModif as Assistance, ItemTroopModif as Charisma, HerbCost as Herbs, GemCost as Gems
FROM [Item] WHERE ItemID in (2);
Run Code Online (Sandbox Code Playgroud)

由于将这些名称括起来仍然会给您带来缺少参数的投诉,因此我要求您在 Access 的查询设计器中测试该查询。在这种情况下,Access 会显示一个参数输入框,其中还包含 Access 将其解释为参数的单词。

您报告 Access 认为ItemPicture是一个参数。因此,通过在 Access Design View 中检查该表,您发现实际的字段名称是ItemImageURL

SELECT ItemName as [Name], ItemImageURL as [Picture], ItemHeroModif as Assistance, ItemTroopModif as Charisma, HerbCost as Herbs, GemCost as Gems
FROM [Item] WHERE ItemID in (2);
Run Code Online (Sandbox Code Playgroud)