必须声明标量变量

时间:2017-01-25 21:53:43

标签: c# asp.net

以下代码今天早上工作得非常好,但现在提供了#34;必须声明标量变量" @ Quantity"我在这个和其他网站上尝试了很多建议 - 但仍然无法解决问题。我今天早上对表单所做的唯一更改是添加了一个复选框。我尝试删除@Quantity var,错误只是转到@operator(下一行)我的代码给出错误如下:

protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection TSTTWI = new SqlConnection("Data Source=TS-ERP01;Initial Catalog=TST-TWI;Integrated Security=True");
        {
            SqlCommand nc = new SqlCommand ("Insert into NCM (Quantity, Operator, NonConformance, Date, Description, PN, RMA) Values (@Quantity, @Operator, @NonConformance, @Date, @Description, @PN, @RMA)", TSTTWI);


            TSTTWI.Open();
            nc.ExecuteNonQuery();
            TSTTWI.Close();


            nc.Parameters.AddWithValue("@Quantity", txtQuantity.Text);
            nc.Parameters.AddWithValue("@Operator", txtName.Text);
            nc.Parameters.AddWithValue("@NonConformance", txtNonConf.Text);
            nc.Parameters.AddWithValue("@Date", txtDate.Text);
            nc.Parameters.AddWithValue("@Description", txtDescript.Text);
            nc.Parameters.AddWithValue("@PN", DDPartNo.Text);
            nc.Parameters.AddWithValue("@RMA", txtRMA.Text);





            if (IsPostBack)
            {

2 个答案:

答案 0 :(得分:2)

在添加参数之前,您似乎正在尝试执行nc。也许尝试将此块移动到您要添加参数的部分下方。

nc.Parameters.AddWithValue("@Quantity", txtQuantity.Text);
nc.Parameters.AddWithValue("@Operator", txtName.Text);
nc.Parameters.AddWithValue("@NonConformance", txtNonConf.Text);
nc.Parameters.AddWithValue("@Date", txtDate.Text);
nc.Parameters.AddWithValue("@Description", txtDescript.Text);
nc.Parameters.AddWithValue("@PN", DDPartNo.Text);
nc.Parameters.AddWithValue("@RMA", txtRMA.Text);

TSTTWI.Open();
nc.ExecuteNonQuery();
TSTTWI.Close();

答案 1 :(得分:0)

你正在同时对错误进行处罚。

TSTTWI.Open();
nc.ExecuteNonQuery();
TSTTWI.Close();

使用此代码,您将打开连接,执行命令并关闭连接。然后在这一行下方开始添加参数

nc.Parameters.AddWithValue("@Quantity", txtQuantity.Text);
nc.Parameters.AddWithValue("@Operator", txtName.Text);
....

正确的方法是:

try{
    TSTTWI.Open();

    nc.Parameters.AddWithValue("@Quantity", txtQuantity.Text);
    nc.Parameters.AddWithValue("@Operator", txtName.Text);
    ....

    nc.ExecuteNonQuery();
    TSTTWI.Close();
}
catch(Exception exception){

 //log the exception somewhere 
}