【问题标题】:Can we delete a Data table row while reading it with SqlReader我们可以在使用 SqlReader 读取数据表行时删除它吗
【发布时间】:2023-03-23 04:57:01
【问题描述】:

我创建了两个存储过程,一个用于读取数据行,一个用于删除,但我想知道是否可以在读取记录时删除记录,以及它是否是最佳实践?

例如

while (rdr.Read())
{
    If(rdr[abc].ToString() != Null)
    {Maybe delete it ?}
}

我的问题是,我可以在阅读时删除一行吗? :)

【问题讨论】:

  • 对数据表设置条件执行forloop获取数据行并删除它

标签: c# sql-server-2005 stored-procedures


【解决方案1】:

基本上,sql server 不允许您同时执行两个存储过程。我想你可以参考链接How can I run stored procedures in parallel

【讨论】:

    【解决方案2】:

    这就是你可以用 c# 做的事情

    DataTable table = GetTable(); // Get the data table.
        foreach (DataRow row in table.Rows) // Loop over the rows.
        {
    
            string getvalue= row[1].ToString();
            If( getvalue == your condition || getvalue == DBNull.Value)
                {
                    table.Row.Remove(row[1]);
                }
    }   }
    

    你试过了吗

     SqlCommand cmd = new SqlCommand("select * from yourtable", con);
            con.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            { 
                string value=dr[0].ToString();
                if (value == "yourcondition")
                {              
                    SqlCommand cmd2 = new SqlCommand("delete from yourtable where columnname ='"+value+"'", con2);
                    con2.Open();
                    cmd2.ExecuteNonQuery();
                    con2.Close();
                }
            } dr.Close();
            con.Close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多