c# - C#中的存储过程

标签 c# .net sql-server stored-procedures

我在C#中遇到存储过程问题,出现此错误:


  过程或函数myQSProcedure_Delete有太多参数
  指定。


我无法解决此问题。请帮助我。

代码如下。

ALTER PROCEDURE [dbo].[myQSProcedure_Delete] 
@Id int
AS
BEGIN
Delete From tblfb where Id = @Id
End


我的C#代码是:

DataTable dt = (DataTable)ViewState["dt"];
DataTable dtDelete = (DataTable)ViewState["dtDelete"];
dtDelete.Rows.Add(dt.Rows[e.RowIndex]["Id"].ToString(),
dt.Rows[e.RowIndex]["name"].ToString(), dt.Rows[e.RowIndex]["session"].ToString(),
dt.Rows[e.RowIndex]["gender"].ToString(), dt.Rows[e.RowIndex]["email"].ToString(),
dt.Rows[e.RowIndex]["address"].ToString(), dt.Rows[e.RowIndex]["priority"].ToString(),       
dt.Rows[e.RowIndex]["comments"].ToString());
ViewState["dtDelete"] = dtDelete;
dt.Rows[e.RowIndex].Delete();
dt.AcceptChanges();
if (dt.Rows.Count < 1)
dt.Rows.Add(null, "", "", "", "", "", "", "");
GridView1.DataSource = dt;
GridView1.DataBind();
ViewState["dt"] = dt;
if (dt.Rows[0][0].ToString().Equals(""))
    {
        GridView1.Rows[0].Visible = false;
    }
SqlConnection conn = new SqlConnection("data source=Burhan\\SQLEXPRESS;database=mydb;integrated security=true");
    conn.Open();
    SqlCommand cmd = new SqlCommand("myQSProcedure_Delete", conn);
    cmd.CommandType = CommandType.StoredProcedure;
  foreach (DataRow row in dtDelete.Rows)
    {
        cmd.Parameters.Add(new SqlParameter("@Id",row[0]));
        cmd.ExecuteNonQuery();
    }
   conn.Close();
   GridView1.DataSource = dt;
    GridView1.DataBind();
    ViewState["dt"] = dt;

最佳答案

您还可以添加一次参数,并为其分配值n次,如下所示:

  using (var cmd = new SqlCommand("myQSProcedure_Delete", conn))
  {
      cmd.CommandType = CommandType.StoredProcedure;
      cmd.Parameters.Add("@Id",SqlDbType.Int);
      foreach (DataRow row in dtDelete.Rows)
      {
          cmd.Parameters["@Id"].Value = row[0];
          cmd.ExecuteNonQuery();
      }
  }

关于c# - C#中的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13697273/

相关文章:

c# - List<int> 使用 linq 过滤

sql - '1' 附近的语法不正确。 SQL Pivot 需要 ID、QUOTED_ID 或 '.' 错误

sql-server - Microsoft SQL Server,使用一个命令恢复数据库的备份

c# - 比较图像和标记差异 c#

c# - 需要在 webview Win 10 UWP 中获取鼠标事件

c# - 从类型参数设置的类型参数

c# - 无法在 vs 2017 中添加任何 nuget 包

c# - 用于构建自动化的 powershell 或 python

要以逗号分隔的形式转换的 sql server 列值

c# - 在 Devexpress gridcontrol 中隐藏标题