快速业务通道

自己动手写ASP.NET ORM框架(八):实现修改功能Update方法

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

前面一节中已经实现了简单的新增功能,下面来实现修改功能,代码如下1-1:

#region 将实体数据修改到数据库 
public int Update<T>(T entity)
{
   TableInfo tableInfo = DbEntityUtils.GetTableInfo (entity,DbOperateType.UPDATE);

   string strSql = DbEntityUtils.GetUpdateSql(tableInfo);

   IDbDataParameter[] parms = DbFactory.CreateDbParameters (tableInfo.Columns.Count);

   DbEntityUtils.SetParameters(tableInfo.Columns, parms);

   object val = AdoHelper.ExecuteNonQuery(transaction, CommandType.Text,  strSql, parms);

   return Convert.ToInt32(val);
}
#endregion

在1-1代码中,绝大多数代码都和前面一节中的Save方法相同,这里主要看一下string strSql = DbEntityUtils.GetUpdateSql(tableInfo); 这段代码1-2:

public static string GetUpdateSql(TableInfo tableInfo)
{
   StringBuilder sbBody = new StringBuilder();

   foreach (string key in tableInfo.Columns.Keys)
   {
     object value = tableInfo.Columns[key];

     sbBody.Append(key).Append("=").Append(AdoHelper.DbParmChar +  key).Append(",");
   }

   sbBody.Remove(sbBody.ToString().Length - 1, 1);

   tableInfo.Columns.Put(tableInfo.Id.Key, tableInfo.Id.Value);

   string strSql = "update {0} set {1} where {2} =" +  AdoHelper.DbParmChar + tableInfo.Id.Key;
   strSql = string.Format(strSql, tableInfo.TableName, sbBody.ToString(),  tableInfo.Id.Key);

   return strSql;
}

上面代码就是通过tableInfo.Columns集合中的列名,组合成字符串,如strSql = “update student set studentno = @studentno,name = @name,sex = @sex where studentid = @studentid”; 然后在Update方法中通过参数数组将值传入并作更新操作。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号