/// <summary> /// 执行操作 /// </summary> /// <param name="commandParam"></param> /// <returns></returns> public CommandResult Execute(CommandParam commandParam) { var dbHelper = commandParam.DbHelper; IniUiParam(commandParam); BaseCommandParam baseCommandParam = new BaseCommandParam(commandParam); CommandResult result = new CommandResult(); MyBatis.DataMapper.Session.ISession session = null; IDbConnection conn = null; try { session = dbHelper.SessionFactory.OpenSession(); session.OpenConnection(); conn = dbHelper.CurrentSession.Connection; baseCommandParam.DbConnection = conn; baseCommandParam.ParameterPrefix = dbHelper.SessionFactory.DataSource.DbProvider.ParameterPrefix; result = BaseExecute(baseCommandParam); } catch (Exception ex) { log.Error("执行" + this.GetType().FullName + "错误=" + ex.ToString()); result.iResult = -1; result.Exception = ex; return(result); } finally { conn.Close(); session.Close(); session.Dispose(); } return(result); }
protected override CommandResult BaseExecute(BaseCommandParam commandParam) { CommandResult result = new CommandResult(); #region 系统数据 var biz = commandParam.UiBiz; var uiHelper = commandParam.UiHelper; var uiParam = commandParam.UiParam; var sysParam = commandParam.SysParam; var conn = commandParam.DbConnection; var prefix = commandParam.ParameterPrefix; #endregion #region 初始化操作 string tableName = uiHelper.UiData.Crud.TableName; IDbCommand command = conn.CreateCommand(); command.Parameters.Clear(); StringBuilder sResult = new StringBuilder(); string br = "<br>"; #endregion #region 验证必选项为空 foreach (ParamField parField in uiHelper.Update.Panel.ParamFields) { bool isNull = parField.Nullable; string key = parField.FieldName; string caption = uiHelper.UiData.GetCaption(parField.Caption, parField.FieldName).Value; if (!isNull) { object value = null; uiParam.TryGetValue(key, out value); if (value == null || string.IsNullOrWhiteSpace(value.ToString())) { sResult.Append(caption).Append("为空,请添加!").Append(br).ToString(); } } } result.sResult = sResult.ToString(); if (result.sResult != null && (!string.IsNullOrWhiteSpace(result.sResult))) { result.iResult = -1; result.sResult = result.sResult.Remove(result.sResult.Length - 1, 1); return(result); } #endregion #region 检验唯一项 foreach (Unique unique in uiHelper.UiData.Crud.Uniques) { command.Parameters.Clear(); StringBuilder sqlstr = new StringBuilder("select count(*) from " + tableName + " where 1=1"); foreach (string field in unique.FieldList) { string key = field.Trim(); sResult.Append(uiHelper.UiData.GetCaption(string.Empty, field).Value).Append(" "); string dbkey = prefix + key; object value = null; uiParam.TryGetValue(key, out value); if (value != null) { IDbDataParameter dbparam = command.CreateParameter(); dbparam.ParameterName = dbkey; dbparam.Value = value; command.Parameters.Add(dbparam); sqlstr.Append(" and ").Append(key).Append(" = ").Append(dbkey); } } #region 主键 if (string.IsNullOrWhiteSpace(sysParam.Primarykey.Key) || sysParam.Primarykey.Value == null || string.IsNullOrWhiteSpace(sysParam.Primarykey.Value.ToString())) { result.sResult = "没有主键信息"; result.iResult = -1; return(result); } else { string key = sysParam.Primarykey.Key.Trim(); string dbkey = prefix + key; object value = sysParam.Primarykey.Value; IDbDataParameter dbparam = command.CreateParameter(); dbparam.ParameterName = dbkey; dbparam.Value = value; command.Parameters.Add(dbparam); sqlstr.Append(" and ").Append(key).Append("").Append("<>").Append(dbkey); } #endregion command.CommandText = sqlstr.ToString(); command.CommandType = CommandType.Text; int obj = Convert.ToInt32(command.ExecuteScalar()); if (obj > 0) { result.iResult = -1; result.sResult = sResult.Append(" 值重复,数据添加失败!").ToString(); return(result); } } #endregion return(result); }
protected override CommandResult BaseExecute(BaseCommandParam commandParam) { CommandResult result = new CommandResult(); #region 系统数据 var biz = commandParam.UiBiz; var uiHelper = commandParam.UiHelper; var uiParam = commandParam.UiParam; var sysParam = commandParam.SysParam; var conn = commandParam.DbConnection; var prefix = commandParam.ParameterPrefix; #endregion #region 初始化操作 string tableName = uiHelper.UiData.Crud.TableName; IDbCommand command = conn.CreateCommand(); command.Parameters.Clear(); StringBuilder sqlsb = new StringBuilder(); #endregion #region 操作数据整理 #region 逻辑删除 if (!string.IsNullOrWhiteSpace(sysParam.DeleteFlag.Key)) { sqlsb.Append("update " + tableName + " set "); sqlsb.Append(sysParam.DeleteFlag.Key).Append(" = 1 "); #region 用户信息 string key = commandParam.UiBiz.UserField; object value = null; if (!string.IsNullOrWhiteSpace(key)) { string dbkey = prefix + key; if (value != null) { sqlsb.Append(" , "); sqlsb.Append("").Append(key).Append(" = ").Append(dbkey); IDbDataParameter dbparam = command.CreateParameter(); dbparam.ParameterName = dbkey; dbparam.Value = value; command.Parameters.Add(dbparam); } } #endregion #region 时间信息 key = commandParam.UiBiz.TimeField; if (!string.IsNullOrWhiteSpace(uiHelper.Delete.TimeField)) { value = DateTime.Now; string dbkey = prefix + key; if (value != null) { sqlsb.Append(" , "); sqlsb.Append("").Append(key).Append(" = ").Append(dbkey); IDbDataParameter dbparam = command.CreateParameter(); dbparam.ParameterName = dbkey; dbparam.Value = value; command.Parameters.Add(dbparam); } } #endregion } #endregion #region 物理删除 else { sqlsb.Append("delete from " + tableName + " "); } if (true) { string key = sysParam.Primarykey.Key; object value = sysParam.Primarykey.Value; string dbkey = prefix + key; sqlsb.Append(" where "); sqlsb.Append("").Append(key).Append(" = ").Append(dbkey); IDbDataParameter dbparam = command.CreateParameter(); dbparam.ParameterName = dbkey; dbparam.Value = value; command.Parameters.Add(dbparam); } #endregion #endregion #region 执行操作 command.CommandText = sqlsb.ToString(); command.CommandType = CommandType.Text; IDbCommandLog(command); int obj = Convert.ToInt32(command.ExecuteScalar()); if (obj > 0) { result.iResult = -1; return(result); } #endregion return(result); }
/// <summary> /// 基础执行 /// </summary> /// <param name="commandParam"></param> /// <returns></returns> protected override CommandResult BaseExecute(BaseCommandParam commandParam) { CommandResult Result = new CommandResult(); return(Result); }
/// <summary> /// 基本执行操作 /// </summary> /// <param name="commandParam"></param> /// <returns></returns> protected abstract CommandResult BaseExecute(BaseCommandParam commandParam);
protected override CommandResult BaseExecute(BaseCommandParam commandParam) { CommandResult result = new CommandResult(); sqlKeys = new List <string>(); #region 系统数据 var biz = commandParam.UiBiz; var uiHelper = commandParam.UiHelper; var uiParam = commandParam.UiParam; var sysParam = commandParam.SysParam; var conn = commandParam.DbConnection; var prefix = commandParam.ParameterPrefix; #endregion #region 初始化操作 string tableName = uiHelper.UiData.Crud.TableName; IDbCommand command = conn.CreateCommand(); command.Parameters.Clear(); StringBuilder sqlsb = new StringBuilder("update " + tableName + " set "); #endregion #region 操作数据整理 if (keyNotInSql(sysParam.DeleteFlag.Key)) { string key = sysParam.DeleteFlag.Key; object value = sysParam.DeleteFlag.Value; addDataParameter(sqlsb, command, key, prefix, value); } else { foreach (ParamField field in uiHelper.Update.Panel.ParamFields) { string datasource = string.Empty; if (!string.IsNullOrWhiteSpace(field.Datasource)) { datasource = field.Datasource.Trim(); } string key = field.FieldName.Trim(); string dbkey = prefix + key; object value = null; if (!uiParam.TryGetValue(key, out value)) { uiParam.TryGetValue(datasource, out value); } addDataParameter(sqlsb, command, key, prefix, value); } } #region 用户信息 if (keyNotInSql(commandParam.UiBiz.UserField)) { string key = commandParam.UiBiz.UserField; object value = sysParam.UserId.Value; addDataParameter(sqlsb, command, key, prefix, value); } #endregion #region 时间信息 if (keyNotInSql(commandParam.UiBiz.TimeField)) { string key = commandParam.UiBiz.TimeField; object value = DateTime.Now; addDataParameter(sqlsb, command, key, prefix, value); } #endregion #region DataValues foreach (var dvalue in commandParam.UiBiz.DataValues) { string key = dvalue.FieldName; object value = null; if ((keyNotInSql(dvalue.FieldName)) && commandParam.UiParam.TryGetValue(key, out value)) { addDataParameter(sqlsb, command, key, prefix, value); } } #endregion #region where Primarykey=@value if (sqlsb.ToString().Trim().EndsWith(",")) { string sqlstr = sqlsb.ToString().Trim(); sqlsb.Clear(); sqlsb.Append(sqlstr.Remove(sqlstr.Length - 1)); } else { result.sResult = "没有需要修改的信息"; result.iResult = -1; return(result); } if (string.IsNullOrWhiteSpace(sysParam.Primarykey.Key) || sysParam.Primarykey.Value == null || string.IsNullOrWhiteSpace(sysParam.Primarykey.Value.ToString())) { result.sResult = "没有主键信息"; result.iResult = -1; return(result); } else { string key = sysParam.Primarykey.Key.Trim(); string dbkey = prefix + key; object value = sysParam.Primarykey.Value; IDbDataParameter dbparam = command.CreateParameter(); dbparam.ParameterName = dbkey; dbparam.Value = value; command.Parameters.Add(dbparam); sqlsb.Append(" where ").Append("").Append(key).Append(""); sqlsb.Append(" = ").Append(dbkey); } #endregion #endregion #region 执行操作 command.CommandText = sqlsb.ToString(); command.CommandType = CommandType.Text; IDbCommandLog(command); int obj = Convert.ToInt32(command.ExecuteScalar()); if (obj > 0) { result.iResult = -1; return(result); } #endregion return(result); }
protected override CommandResult BaseExecute(BaseCommandParam commandParam) { CommandResult result = new CommandResult(); sqlKeys = new List <string>(); #region 系统数据 var biz = commandParam.UiBiz; var uiHelper = commandParam.UiHelper; var uiParam = commandParam.UiParam; var sysParam = commandParam.SysParam; var conn = commandParam.DbConnection; var prefix = commandParam.ParameterPrefix; #endregion #region 初始化操作 string tableName = uiHelper.UiData.Crud.TableName; IDbCommand command = conn.CreateCommand(); command.CommandType = CommandType.Text; command.Parameters.Clear(); StringBuilder sqlfield = new StringBuilder("INSERT INTO " + tableName + " ("); StringBuilder sqlvalue = new StringBuilder(") VALUES ("); #endregion #region 数据整理 #region 操作数据整理 foreach (ParamField field in uiHelper.Insert.Panel.ParamFields) { string key = field.FieldName.Trim(); string datasource = string.Empty; if (!string.IsNullOrWhiteSpace(field.Datasource)) { datasource = field.Datasource.Trim(); } object value = null; if (!uiParam.TryGetValue(key, out value)) { uiParam.TryGetValue(datasource, out value); } addDataParameter(sqlfield, sqlvalue, command, key, prefix, value); } #endregion #region 序列号字段 foreach (SeqField field in uiHelper.UiData.Crud.SeqFields) { string key = field.FieldName; string value = field.SeqName; if ((!string.IsNullOrWhiteSpace(key)) && (!string.IsNullOrWhiteSpace(value))) { addDataParameter(sqlfield, sqlvalue, command, key, string.Empty, value); } } #endregion #region 主键 if (!uiHelper.UiData.Crud.Primarykey.Identity) { string key = uiHelper.UiData.Crud.Primarykey.FieldName; if (!uiParam.ContainsKey(key) && !sqlKeys.Contains(key)) // 判断是否已在使用序列中添加 qusf 20150130 { string sqlstr = "select nvl(max(" + key + "),0) from " + tableName + ""; command.CommandText = sqlstr; object value = command.ExecuteScalar(); if (value == null || value.ToString() == string.Empty) { value = 0; } value = Convert.ToInt64(value.ToString()) + 1; addDataParameter(sqlfield, sqlvalue, command, key, prefix, value); } } #endregion #region 用户信息 if (keyNotInSql(commandParam.UiBiz.UserField)) { string key = commandParam.UiBiz.UserField; object value = sysParam.UserId.Value; addDataParameter(sqlfield, sqlvalue, command, key, prefix, value); } #endregion #region 时间信息 if (keyNotInSql(commandParam.UiBiz.TimeField)) { string key = commandParam.UiBiz.TimeField; object value = DateTime.Now; string dbkey = prefix + key; addDataParameter(sqlfield, sqlvalue, command, key, prefix, value); } #endregion #region 除标示 if (keyNotInSql(sysParam.DeleteFlag.Key)) { string key = sysParam.DeleteFlag.Key; object value = sysParam.DeleteFlag.Value; addDataParameter(sqlfield, sqlvalue, command, key, prefix, value); } #endregion #region DataValues foreach (var dvalue in commandParam.UiBiz.DataValues) { string key = dvalue.FieldName; object value = null; if ((keyNotInSql(dvalue.FieldName)) && commandParam.UiParam.TryGetValue(key, out value)) { addDataParameter(sqlfield, sqlvalue, command, key, prefix, value); } } #endregion sqlfield = sqlfield.Remove(sqlfield.Length - 1, 1); sqlvalue = sqlvalue.Remove(sqlvalue.Length - 1, 1); sqlvalue = sqlvalue.Append(")"); #endregion #region 执行操作 command.CommandText = sqlfield.ToString() + sqlvalue.ToString(); command.CommandType = CommandType.Text; IDbCommandLog(command); int obj = Convert.ToInt32(command.ExecuteScalar()); if (obj > 0) { result.iResult = -1; return(result); } #endregion return(result); }