下一站天后

今朝的容颜老于昨晚

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

更新的时候往往只更新一部分字段,而往往存储过程却将所有需要更新的地方都写进sql语句中,这样为了方便不同的更新操作可以使用同一存储过程。但更新的时即使只更新一个字段,也需要得到所有字段。

以前通过对象得到其属性,在程序里面给每个属性赋值。需要在每个要更新的地方都麻烦的赋值一次。

有没有更好的方法呢?

有,如果把这个赋值的过程放到这个对象的实体类中,只需要在更新之前得到这个实体类,便可以得到里面所有的值,然后更改要更新的字段即可,代码量减少,并且是面向对象的思维在做程序,但必然要在更新前查询一次 系统性能减慢。

下面以“论坛帖子”更新“排序号”为例,Subject su = new Subject(Id); 根据Id 得到这个对象的实体,便得到所有字段的值,不需要像以前su.Title = title类似的去赋值了。是不是很方便呢?

private void Dg_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        {            
            
int Id = Convert.ToInt32(this.Dg.DataKeys[e.Item.ItemIndex].ToString());            
            Subject su 
= new Subject(Id);                
            su.OrderBy 
= int.Parse(((TextBox)e.Item.Cells[6].Controls[0]).Text);
            su.Update();
            Dg.EditItemIndex 
= -1;
            DgBind();
        }

 

在来看看实体类里是怎么写的吧!在这里通过查询DataTable dt = dp.SelectSubject(id);得到所有字段的值

public Subject(int id)
        {
            DataTable dt 
= dp.SelectSubject(id);                
            
if(dt.Rows.Count ==1)
            {
                _id            
= Convert.ToInt32(dt.Rows[0]["suId"]);
                _title      
= dt.Rows[0]["suTitle"]==null?"":dt.Rows[0]["suTitle"].ToString();
                _userId        
= Convert.ToInt32(dt.Rows[0]["suUserId"]);
                _forumType  
= Convert.ToInt32(dt.Rows[0]["suType"]);
                _createDate 
= Convert.ToDateTime(dt.Rows[0]["suCreateDate"]);
                _content    
= dt.Rows[0]["suContent"].ToString();
                _state        
= Convert.ToInt32(dt.Rows[0]["suState"]);            
                _info1      
= dt.Rows[0]["suInfo1"]==null?"":dt.Rows[0]["suInfo1"].ToString();            
                _info2        
= dt.Rows[0]["suInfo2"].ToString();            
                _BigType    
= dt.Rows[0]["suBigType"]==null?"": dt.Rows[0]["suBigType"].ToString();
                _orderBy    
= Convert.ToInt32(dt.Rows[0]["suOrderBy"].ToString());
            }
        }
posted on 2008-11-07 17:29  孙雅玲  阅读(414)  评论(0编辑  收藏  举报