首页 > 解决方案 > 当我使用参数化查询时出现此错误(必须声明标量变量@“regNo”)

问题描述

Execute.nonquery 给出了必须声明标量变量的错误。请告诉我解决方案

 private void btndelete_Click(object sender, EventArgs e)
    {
        using (SqlConnection con = new SqlConnection(cs))
          {
         con.Open();
         string query = "delete stu_data where Reg_no=@regNo";
         SqlDataAdapter sda = new SqlDataAdapter(query,con);
         sda.SelectCommand.Parameters.AddWithValue("@regNo", textBox1.Text.ToString());
         sda.DeleteCommand = con.CreateCommand();
         sda.DeleteCommand.CommandText = query;
         sda.DeleteCommand.ExecuteNonQuery();
          }

  }
    }

标签: c#parameterized-query

解决方案


这里有一个很好的删除示例:

try
{
    using (var sc = new SqlConnection(ConnectionString))
    using (var cmd = sc.CreateCommand())
    {
        sc.Open();
        cmd.CommandText = "DELETE FROM excludes WHERE word = @word";
        cmd.Parameters.AddWithValue("@word", word);  
        cmd.ExecuteNonQuery();
    }
}
catch (Exception e)
{
    Box.Text = "SQL error" + e;
}

或者,如果您使用的是 SqlDataAdapter:

command = new SqlCommand("DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

// Add the parameters for the DeleteCommand.
parameter = command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
parameter.SourceVersion = DataRowVersion.Original;

adapter.DeleteCommand = command;
adapter.DeleteCommand.ExecuteNonQuery();

推荐阅读