日期:2014-05-19  浏览次数:20781 次

三层架构下dataset的更新
我的三层架构如下:

数据访问层
                public   void   RunProc(string   procName,   SqlParameter[]   param,   out   DataSet   dataSet)
                {
                        ///创建Command
                        SqlCommand   cmd   =   CreateCommand(procName,   param);

                        ///读取数据
                        dataSet   =   new   DataSet();
                        SqlDataAdapter   da   =   new   SqlDataAdapter(cmd);
                        da.Fill(dataSet);
                }

逻辑层:
                public   DataSet   getMajorByParent2(Int16   parentMajorID)
                {
                        DbFunc   dbFunc   =   new   DbFunc();
                        DataSet   ds   =   new   DataSet();
                        SqlParameter[]   prams   ={   dbFunc.CreateInParam( "@parentMajor ",   SqlDbType.SmallInt,   8,   parentMajorID)   };
                        try
                        {
                                dbFunc.RunProc( "GetMajorByParent ",   prams,   out   ds);
                        }
                        catch   (Exception   ex)
                        {
                                AppError.show(ex);
                        }
                        return   ds;
                }

表现层:
                        dt   =   (new   Major()).getMajorByParent2(Convert.ToInt16(theNode.Tag)).Tables[0];
                        dataGridView1.DataSource   =   dt;

我需要在datagridview中直接编辑数据,在点“更新”按钮写回数据库
一般情况下要直接用sqldataadapter.update(),可这又和三层架构的封装特性不相符,该怎么做?


------解决方案--------------------
为了符合你的架构封装

你可以在更新时通过传递dataset或者datatable来实现