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"。

如果有人可以建议如何将上述插入到表中,那就太好了。

SQL 必须声明标量变量错误

您已在查询文本中使用了参数,但尚未将它们添加到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();