/// <summary> /// 执行编辑操作,返回影响行数 /// </summary> /// <typeparam name="T">实体模型名称</typeparam> /// <param name="connectionStr">数据库字符串连接</param> /// <param name="t">实体模型实例化对象</param> /// <returns>int</returns> public virtual int Update <T>(string connectionStr, T t) { int result = 0; try { #region 初始相关变量定义 var dbOperator = new AdoNetUtility(DbType); EntityColumn idColumn = null; List <EntityColumn> noneIdColumnList = null; bool isHaveColumn = false; bool isHaveId = false; #endregion #region 获取字段名称、值 List <EntityColumn> columnList = new EntityColumnUtility().GetColumnList <T>(t); if (columnList != null && columnList.Count > 0) { var idList = (from p in columnList where p.IsPk == true select p).ToList <EntityColumn>(); if (idList != null && idList.Count > 0) { isHaveId = true; idColumn = idList[0]; } var noneIdList = (from p in columnList where p.IsPk == false select p).ToList <EntityColumn>(); if (noneIdList != null && noneIdList.Count > 0) { isHaveColumn = true; noneIdColumnList = noneIdList; } } #endregion #region 拼接SQL及对数据库操作 if (isHaveColumn && isHaveId) { Type type = typeof(T); string tableName = type.Name; StringBuilder cmdText = new StringBuilder(); cmdText.AppendFormat("update {0} set ", tableName); List <IDbDataParameter> dbParamList = new List <IDbDataParameter>(); for (int i = 0; i < noneIdColumnList.Count; i++) { EntityColumn column = noneIdColumnList[i]; cmdText.AppendFormat("{0}={1}", column.ColumnName, DbPramStr + column.ColumnName); if (i != (noneIdColumnList.Count - 1)) { cmdText.Append(","); } var dbParam = dbOperator.CreateDbParameter(column.ColumnName, column.ColumnValue); dbParamList.Add(dbParam); } cmdText.AppendFormat(" where {0}={1}", idColumn.ColumnName, DbPramStr + idColumn.ColumnName); var idDbParam = dbOperator.CreateDbParameter(idColumn.ColumnName, idColumn.ColumnValue); dbParamList.Add(idDbParam); result = Execute(connectionStr, cmdText.ToString(), CommandType.Text, dbParamList.ToArray()); } #endregion } catch (Exception ex) { throw ex; } return(result); }
/// <summary> /// 对象初始化 /// </summary> public virtual void DbInsInit() { DbPramStr = new AdoNetUtility(DbType).CreateDbParamCharacter(); SqlDbBase = new DbUtility(DbType); }
/// <summary> /// 执行添加操作,返回object(如果设置获取自动增长值,返回为自动增长值,否则返回值为影响行数) /// </summary> /// <typeparam name="T">实体模型名称</typeparam> /// <param name="connectionStr">数据库字符串连接</param> /// <param name="t">实体模型实例化对象</param> /// <returns>object</returns> public virtual object Insert <T>(string connectionStr, T t) { object result = null; try { #region 初始相关变量定义 //var dbBase = new DbBase(dbType); bool isHaveColumn = false; bool isGetIdentityValue = false; List <EntityColumn> noneIdentityColumns = null; #endregion #region 获取字段名称、值 List <EntityColumn> columnList = new EntityColumnUtility().GetColumnList <T>(t); if (columnList != null && columnList.Count > 0) { var identityList = (from p in columnList where (p.IsIdentity == true && p.IsGetIdentityValue == true) select p).ToList <EntityColumn>(); if (identityList != null && identityList.Count > 0) { isGetIdentityValue = true; } var noneIdentityColumnList = (from p in columnList where (p.IsIdentity == false) select p).ToList <EntityColumn>(); if (noneIdentityColumnList != null && noneIdentityColumnList.Count > 0) { isHaveColumn = true; noneIdentityColumns = noneIdentityColumnList; } } #endregion #region 拼接SQL及对数据库操作 if (isHaveColumn) { #region 模板及相关变量定义 Type type = typeof(T); string tableName = type.Name; string tmpColumnNames = "[[ColumnNames]]"; string tmpColumnValues = "[[ColumnValues]]"; List <IDbDataParameter> dbParamList = new List <IDbDataParameter>(); StringBuilder fieldStr = new StringBuilder(); StringBuilder paramStr = new StringBuilder(); StringBuilder sqlBuild = new StringBuilder(); sqlBuild.AppendFormat("insert into {0}({1}) values({2});", tableName, tmpColumnNames, tmpColumnValues); #endregion #region 对非自动增长字段操作 int i = 0; foreach (EntityColumn column in noneIdentityColumns) { fieldStr.Append(column.ColumnName); paramStr.Append(DbPramStr + column.ColumnName); if (i != (noneIdentityColumns.Count - 1)) { fieldStr.Append(","); paramStr.Append(","); } var dbParam = new AdoNetUtility(DbType).CreateDbParameter(column.ColumnName, column.ColumnValue); dbParamList.Add(dbParam); i++; } sqlBuild.Replace(tmpColumnNames, fieldStr.ToString()); sqlBuild.Replace(tmpColumnValues, paramStr.ToString()); #endregion #region 对要获取自动增长字段操作 if (isGetIdentityValue) { if ((int)DbType == (int)GcEnumDbType.MsSql) { sqlBuild.Append("select @@identity;"); } else if ((int)DbType == (int)GcEnumDbType.MsSql) { sqlBuild.Append("select @@identity;"); } result = ExecuteScalar(connectionStr, sqlBuild.ToString(), CommandType.Text, dbParamList.ToArray()); } else { result = Execute(connectionStr, sqlBuild.ToString(), CommandType.Text, dbParamList.ToArray()); } #endregion } #endregion } catch (Exception ex) { throw ex; } return(result); }