【发布时间】:2018-07-25 05:33:29
【问题描述】:
我知道这个问题有很多问题。也许再问也没用,但是在尝试了很多之后我无法找到解决方案,所以如果有人帮助我,我将非常感激。代码如下:
String personQuery =
"INSERT INTO Person(X, Y, Width, Height, Confidence) VALUES (@positionX, @positionY, @width, @height, @confidence)";
SqlCommand personCmd = new SqlCommand(personQuery, connection);
foreach (var objectItem in items)
{
if (objectItem.Type == "person")
{
personCmd.Parameters.AddWithValue("@positionX", objectItem.X);
personCmd.Parameters.AddWithValue("@positionY", objectItem.Y);
personCmd.Parameters.AddWithValue("@width", objectItem.Width);
personCmd.Parameters.AddWithValue("@height", objectItem.Height);
personCmd.Parameters.AddWithValue("@confidence", objectItem.Confidence);
personCmd.Parameters.Clear();
connection.Open();
personCmd.ExecuteNonQuery();
connection.Close();
}
}
运行此代码后,我收到此错误:必须声明标量变量“@positionX”。' 问题是什么?提前谢谢...
【问题讨论】:
-
为什么要添加参数然后清除它们?
personCmd.Parameters.Clear(); -
那么你麻烦设置了所有参数,然后清除参数集合?您可能试图解决在循环中设置参数导致多次声明相同参数的问题,但是您以错误的方式清除/填充。 (当然,更好的办法是在循环外声明参数并在里面设置)
-
我想向数据库中插入多个数据。 X、Y、宽度、高度、置信度参数对于图像中检测到的每个人都不同。这就是为什么我每次都想清除它们...
-
您还希望我们如何向您解释这一点?你在做“添加、清除、执行”,这不起作用,因为“执行”需要使用“添加”完成的工作。
-
@Damien_The_Unbeliever:在循环外打开和关闭连接并调用 personCmd.Parameters.Clear();在 personCmd.ExecuteNonQuery() 之后;我的代码有效。感谢您的帮助。犯了这个错误我感觉很糟糕:设置值、清除值、执行值...
标签: c# sql .net sql-server ado.net