c#运行时错误消息

时间:2014-07-24 12:52:04

标签: c# c#-4.0 c#-3.0

我一直收到一个我不明白的错误。必须声明标量变量“@q”

数小时的研究,尝试了多种解决方案但没有成功。

SqlCommand sc = new SqlCommand(
    "UPDATE Stockmaster SET Curbalqty=@q WHERE Stockno= @Stockno");
cmnd.Parameters.AddWithValue("@Stockno", s);
cmnd.Parameters.AddWithValue("@q", q);                                        

sc.Connection = con;
sc.ExecuteNonQuery();

4 个答案:

答案 0 :(得分:1)

您应该将参数添加到cmnd

,而不是将参数添加到sc

试试这个

SqlCommand sc = new SqlCommand("UPDATE Stockmaster SET Curbalqty=@q WHERE Stockno= @Stockno");
sc.Parameters.AddWithValue("@Stockno", s);
sc.Parameters.AddWithValue("@q", q);

sc.Connection = con;

con.Open();
sc.ExecuteNonQuery();
con.Close();

除了在致电Open之前您的联系不是ExecuteNonQuery,您应该为此con.Open();做。{/ p>

更加资源友好的代码如下所示:

using (SqlConnection con = new SqlConnection("your connection string"))
{
   using (SqlCommand sc = new 
    SqlCommand("UPDATE Stockmaster SET Curbalqty= @q WHERE Stockno= @Stockno"))
   {
        sc.Parameters.AddWithValue("@Stockno", s);
        sc.Parameters.AddWithValue("@q", q);

        sc.Connection = con;

        con.Open();
        sc.ExecuteNonQuery();
        con.Close();
   }
}

答案 1 :(得分:-1)

使用sc代替' cmnd'。并尝试从以下行中删除@符号:

sc.Parameters.AddWithValue("@Stockno", s);
sc.Parameters.AddWithValue("@q", q);

并执行以下操作:

sc.Parameters.Add("Stockno", SqlDbType.VarChar).Value = s;
sc.Parameters.Add("q", SqlDbType.VarChar).Value = q;

答案 2 :(得分:-2)

我认为您需要添加数据类型

 SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.Add("@Stockno", SqlDbType.Int);
        command.Parameters["@@Stockno"].Value = customerID;

答案 3 :(得分:-3)

试试这个:

        SqlCommand sc = new SqlCommand("UPDATE Stockmaster SET Curbalqty= " + @q + " WHERE Stockno= " + @Stockno);
                cmnd.Parameters.AddWithValue("@Stockno", s);
                cmnd.Parameters.AddWithValue("@q", q);




                sc.Connection = con;
                sc.ExecuteNonQuery();