使用GRIDVIEW,其中数据使用SQLDATASOURCE控件绑定,
在其中有删除按钮列,那么如果点击删除按钮删除当前一条被外键有引用的数据时,
将引发数据库异常,要使用try{}catch{}语句来处理异常,代码应该写在什么位置?

解决方案 »

  1.   

    给你参考一段我们老师写的代码//删除学生信息
        public bool DeleteStu(string stuid)
        {
            SqlTransaction OraTrans = getTransaction();
            try
            {
                if (stuid != null && stuid != "")
                {
                    string sql = "DELETE FROM Hubu_Student WHERE StuId = '" + stuid + "'";
                    if (ExecuteSql(sql, OraTrans) == false)
                    {
                        OraTrans.Rollback();
                        return false;
                    }                sql = "DELETE FROM hubu_stu_course WHERE StuId = '" + stuid + "'";
                    if (ExecuteSql(sql, OraTrans) == false)
                    {
                        OraTrans.Rollback();
                        return false;
                    }            }
                OraTrans.Commit();
            }
            catch (Exception e1)
            {
                OraTrans.Rollback();
                throw e1;
            }
            return (true);
        }
    这个放在业务逻辑层就好了
      

  2.   

    关键使用GRIDVIEW自动生成的删除按钮,它的删除代码在SQLDATASOUCE控件中
    就已经自动生成了.不需要再另外写.
    我感觉是应该在SQLDATASOUCE控件的DELETING事件中写异常处理代码,
    这样对么,请大家会的人赐教?并且该怎么写呢?
      

  3.   

    写在cmd.EndExecuteNonQuery()前,做数据库交互执行的前面 Connection关闭前结束