Sql必须声明标量变量错误

时间:2016-01-29 13:10:10

标签: c# .net ado.net

我是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'未处理的异常   发生在System.Data.dll中        附加信息:必须声明标量变量" @ item_type"。

如果有人可以建议如何将上述插入物放入表格中,那将是很好的。

4 个答案:

答案 0 :(得分:5)

您在查询文字中使用了参数,但尚未将其添加到SqlCommand

在执行查询之前,您需要为每个参数添加这样的代码:

cmd.Parameters.Add("@item_type", SqlDbType.????);
cmd.Parameters["@item_Type"].Value = ???

您应为每个参数指定适当的类型和值。

答案 1 :(得分:0)

您的SQL查询具有期望值的参数:

... VALUES (@item_type, @load_id, @UserId, @Comment, @dateamended)

所以你需要提供这些值。你实际上插入到数据库中的是什么?您提供的值决定了这一点。例如:

cmd.Parameters.AddWithValue("@item_type", "some value");

答案 2 :(得分:0)

您必须添加如下参数:

cmd.Parameters.Add(new SqlParameter() { Name = "@item_type", SqlDbType =  /* Use your DB Type here */, Value = /* Add your value here */ });

答案 3 :(得分:0)

您的查询未添加实际parameter值。您可以使用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();