程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 自己動手寫ASP.NET ORM框架(七):實現新增功能Save方法

自己動手寫ASP.NET ORM框架(七):實現新增功能Save方法

編輯:關於ASP.NET

在上一篇中講了根據ID查詢的功能FindById方法,接下來將實現Save方法的功能,代碼如 下1-1:

#region 將實體數據保存到數據庫
public int Save<T>(T entity)
{
     //從實體類中獲取新增數據所需的表信息存於TableInfo對象中
     TableInfo tableInfo = DbEntityUtils.GetTableInfo (entity,DbOperateType.INSERT);
     //根據tableInfo對象中的數據生成新增的SQL語句
     string strSql = DbEntityUtils.GetInsertSql(tableInfo);
     //根據tableInfo中Columns的數量創建參數數組
     IDbDataParameter[] parms = DbFactory.CreateDbParameters (tableInfo.Columns.Count);

     //將tableInfo對象中Columns集合中數據設置到參數數組中
     DbEntityUtils.SetParameters(tableInfo.Columns, parms);

     //執行SQL命令
     object val = AdoHelper.ExecuteNonQuery(transaction,  CommandType.Text, strSql, parms);
     //返回所影響的行數
     return Convert.ToInt32(val);
}
#endregion

代碼1-1中DbEntityUtils.GetTableInfo方法在實現查詢功能FindById方法中已經有分析 了。

代碼string strSql = DbEntityUtils.GetInsertSql(tableInfo); 中 DbEntityUtils.GetInsertSql代碼如下1-2:

public static string GetInsertSql(TableInfo tableInfo)
{
     StringBuilder sbColumns = new StringBuilder();
     StringBuilder sbValues = new StringBuilder();
     //將tableInfo中的Id的名稱和值存入Columns集合中
     tableInfo.Columns.Put(tableInfo.Id.Key, tableInfo.Id.Value);
     foreach (string key in tableInfo.Columns.Keys)
     {
         if (!string.IsNullOrEmpty(key.Trim()))
         {
             //根據Columns集合中key生成SQL語句,例如:
             //strsql = “insert into student (studentid,studentno,name) values((@studentid,@studentno,@name)”;
             object value = tableInfo.Columns[key];
             sbColumns.Append(key).Append(",");
             sbValues.Append(AdoHelper.DbParmChar).Append (key).Append(",");
         }
     }
     sbColumns.Remove(sbColumns.ToString().Length - 1, 1);
     sbValues.Remove(sbValues.ToString().Length - 1, 1);
     string strSql = "INSERT INTO {0}({1}) VALUES({2})";
     strSql = string.Format(strSql, tableInfo.TableName,  sbColumns.ToString(), sbValues.ToString());
     return strSql;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved