我要实现的功能是 如果数据库中的某条信息在修改过后不包括了,则会被删除所以我的思路是先删除表中的所有数据,然后再添加修改过后的数据,
可是问题也来了,按我下面的代码可以实现,但是如果当SqlCommand cmd = new SqlCommand这一行出现异常的情况就完了,先删除所有数据,再去发现异常的话,那我表里什么数据都没有了,应该怎么去处理这个异常呢
 
if (sm.delall() > 0)//删除表中所有数据
                    {
                        foreach (DataRowView drv in dv)
                        {
                            SqlCommand cmd = new SqlCommand("insert into manage values('" + drv[1] + "','" + drv[2] + "','" + drv[3] + "','" + drv[4] + "','" + drv[5] + "')", conn);//再添加其他数据
                          cmd.ExecuteNonQuery();
                        }                    }

解决方案 »

  1.   


    SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["ad_518"]);
                    conn.Open();
                    SqlTransaction tran = conn.BeginTransaction();   
     try
                    {
                        if (isdel.Checked)
                        {                        kehu kh = new kehu();
                            if (kh.delall() > 0)
                            {
                                foreach (DataRowView drv in dv)
                                {
                                    SqlCommand cmd = new SqlCommand("insert into kehuyuan values('" + drv[1] + "','" + int.Parse(drv[2].ToString().Trim()) + "')", conn);
                                    //SqlCommand cmd = new SqlCommand("updata from manage set username='" + drv[1] + "' and userpwd='" + drv[2] + "' and flag='" + drv[3] + "' and chinesename='" + drv[4] + "' and forbid='" + drv[5] + "' where id='" + drv[0] + "'", conn);
                                    cmd.Transaction = tran;
                                    cmd.ExecuteNonQuery();
                                    tran.Commit();
                                }                        }
                        }
    catch { tran.Rollback() ;Response.Redirect("error.htm");
    为什么这样还是会异常然后全部删除啊?