当前位置:编程学习 > asp >>

通过泛型插入(更新)实体数据

/// <summary>
/// 通过泛型插入数据
/// </summary>
/// <typeparam name="T">类名称</typeparam>
/// <param name="obj">类对象,如果要插入空值,请使用@NULL</param>
/// <returns>插入的新记录ID</returns>
public static int Insert<T>(T obj)
{
 
 
      StringBuilder strSQL = new StringBuilder();
 
 
      strSQL = GetInsertSQL(obj);
 
 
      // 插入到数据库中
      object result = SQLPlus.ExecuteScalar(CommandType.Text, strSQL, null);
 
 
      return Convert.IsDBNull(result) ? 0 : Convert.ToInt32(result);
}
 
 
/// <summary>
/// 通过泛型更新数据
/// </summary>
/// <typeparam name="T">类名称</typeparam>
/// <param name="obj">类对象,如果要更新空值,请使用@NULL</param>
/// <returns>更新结果,大于0为更新成功</returns>
public static int Update<T>(T obj)
{
 
 
     StringBuilder strSQL = new StringBuilder();
     strSQL = GetUpdateSQL(obj);
 
 
     if (String.IsNullOrEmpty(strSQL.ToString()))
     {
          return 0;
     }
 
 
 
 
     // 更新到数据库中
     object result = SQLPlus.ExecuteNonQuery(CommandType.Text, strSQL, null);
 
 
     int returnValue = Convert.IsDBNull(result) ? 0 : Convert.ToInt32(result);
 
 
     return returnValue;
 
 
}
 
 
/// <summary>
/// 获取实体的插入语句
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="obj">实体对象</param>
/// <returns>返回插入语句</returns>
public static StringBuilder GetInsertSQL<T>(T obj)
{
 
 
      string tableKey = GetPropertyValue(obj, BaseSet.PrimaryKey);
      string keyValue = GetPropertyValue(obj, tableKey);
      string tableName = GetPropertyValue(obj, BaseSet.TableName);
 
 
      Type t = obj.GetType();//获得该类的Type
 
 
      StringBuilder strSQL = new StringBuilder();
 
 
      strSQL.Append("insert into " + tableName + "(");
 
 
      string fields = "";
      string values = "";
 
 
      //再用Type.GetProperties获得PropertyInfo[]
      foreach (PropertyInfo pi in t.GetProperties())
      {
 
 
           object name = pi.Name;//用pi.GetValue获得值
 
 
           // 替换Sql注入符
           string value1 = Convert.ToString(pi.GetValue(obj, null)).Replace("'", "''");
 
 
           //string dataType = pi.PropertyType.ToString().ToLower();
 
 
           string properName = name.ToString().ToLower();
 
 
           if (!string.IsNullOrEmpty(value1) && properName != tableKey.ToLower() && properName != BaseSet.PrimaryKey.ToLower() && properName != BaseSet.TableName.ToLower() && value1 != BaseSet.DateTimeLongNull && value1 != BaseSet.DateTimeShortNull)
           {
                // 判断是否为空
                if (value1 == BaseSet.NULL)
                {
                    value1 = "";
                }
 
 
                fields += Convert.ToString(name) + ",";
                values += "'" + value1 + "',";
 
 
           }
 
 
       }
 
 
       // 去掉最后一个,
       fields = fields.TrimEnd(',');
       values = values.TrimEnd(',');
 
 
       // 拼接Sql串
       strSQL.Append(fields);
       strSQL.Append(") values (");
       strSQL.Append(values);
       strSQL.Append(")");
 
 
       strSQL.Append(";SELECT @@IDENTITY;");
 
 
       return strSQL;
}
 
 
/// <summary>
/// 获取实体的更新SQL串
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="obj">实体对象</param>
/// <returns>返回插入语句</returns>
private static StringBuilder GetUpdateSQL<T>(T obj)
{
 
 
     string tableKey = GetPropertyValue(obj, BaseSet.PrimaryKey);
     string keyValue = GetPropertyValue(obj, tableKey);
     string tableName = GetPropertyValue(obj, BaseSet.TableName);
     StringBuilder strSQL = new StringBuilder();
 
 
     if (string.IsNullOrEmpty(keyValue))
     {
          return strSQL;
     }
 
 
     Type t = obj.GetType();//获得该类的Type
 
 
     strSQL.Append("update " + tableName + " set ");
 
 
     string subSQL = "";
 
 
     string condition = " where " + table
补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,