我们可以在使用SqlReader读取数据表行时删除它

时间:2012-07-26 09:21:45

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

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

e.g。

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

这是你可以用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();