SQL 必须声明标量变量错误
本文关键字:变量 错误 标量 声明 SQL | 更新日期: 2023-09-27 18:32:23
我是C#的新手,可以使用一些指导,谷歌搜索已经建议了很多不同的事情,但没有一个我可以工作。我已经屏蔽了数据源详细信息等,但这些在代码中是有效的
以下是我单击"保存按钮"时的完整代码
public void testLoadAuditBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
System.Data.SqlClient.SqlConnection sqlConnection1 =
new System.Data.SqlClient.SqlConnection("Data Source=XXXXX; Initial Catalog=XXXXX; User ID=XXXXX;Password=XXXXX");
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT INTO testloadaudit (item_type,load_id,UserId, Comment, dateamended) VALUES (@item_type, @load_id, @UserId, @Comment, @dateamended)";
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();
}
我收到此错误
类型为"System.Data.SqlClient.SqlException"的未处理异常 发生在系统数据中.dll 其他信息:必须声明标量变量"@item_type"。
如果有人可以建议如何将上述插入到表中,那就太好了。
您已在查询文本中使用了参数,但尚未将它们添加到SqlCommand
中。
在执行查询之前,您需要为每个参数添加如下代码:
cmd.Parameters.Add("@item_type", SqlDbType.????);
cmd.Parameters["@item_Type"].Value = ???
应为每个参数指定适当的类型和值的位置。
您的 SQL 查询具有需要值的参数:
... VALUES (@item_type, @load_id, @UserId, @Comment, @dateamended)
因此,您需要提供这些值。 您实际上在数据库中插入了什么? 您提供的值决定了这一点。 例如:
cmd.Parameters.AddWithValue("@item_type", "some value");
您必须添加如下参数:
cmd.Parameters.Add(new SqlParameter() { Name = "@item_type", SqlDbType = /* Use your DB Type here */, Value = /* Add your value here */ });
不会为查询添加实际参数值。您可以使用SqlParameterCollection.AddWithValue()
添加它:
cmd.CommandText = "INSERT INTO testloadaudit (item_type,load_id,UserId, Comment, dateamended) VALUES (@item_type, @load_id, @UserId, @Comment, @dateamended)";
cmd.Connection = sqlConnection1;
cmd.Parameters.AddWithValue("@item_type", yourActualItemTypeValue);
// add here values for each other parameters
sqlConnection1.Open();
cmd.ExecuteNonQuery();