protected void Delete(int IdUsuario, int IdPersona) { try { OpenConnection(); SqlTransaction transaction = SqlConn.BeginTransaction(); SqlCommand cmdDelete; try { cmdDelete = new SqlCommand("DELETE usuarios WHERE id_usuario=@id", SqlConn, transaction); cmdDelete.Parameters.Add("@id", SqlDbType.Int).Value = IdUsuario; cmdDelete.ExecuteNonQuery(); cmdDelete = new SqlCommand("DELETE personas WHERE id_persona=@id", SqlConn, transaction); cmdDelete.Parameters.Add("@id", SqlDbType.Int).Value = IdPersona; cmdDelete.ExecuteNonQuery(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Exception ExcepcionManejada = new Exception("Error al eliminar usuario y persona", ex); throw ExcepcionManejada;// Agregar mensaje de error } } catch (Exception) { throw; } finally { CloseConnection(); } }
/// <summary> /// /// </summary> public void BeginTransac() { if (SqlConn.State != ConnectionState.Open) { SqlConn.Open(); } SqlTransac = SqlConn.BeginTransaction(); }
protected void Update(Usuario usuario, Persona persona) { PersonaAdapter personaData = new PersonaAdapter(); try { OpenConnection(); SqlTransaction transaction = SqlConn.BeginTransaction(); SqlCommand cmdUpdate; try { cmdUpdate = new SqlCommand( "UPDATE personas SET nombre=@nombre, apellido=@apellido, direccion=@direccion, email=@email, " + "telefono=@telefono, fecha_nac=@fecha_nac, legajo=@legajo, tipo_persona=@tipo_persona, id_plan=@id_plan " + "WHERE id_persona=@id", SqlConn, transaction); cmdUpdate.Parameters.Add("@id", SqlDbType.Int).Value = persona.ID; personaData.CargarParametrosSql(cmdUpdate, persona); cmdUpdate.ExecuteNonQuery(); cmdUpdate = new SqlCommand( "UPDATE usuarios SET nombre_usuario=@nombre_usuario, clave=@clave, habilitado=@habilitado, " + "nombre=@nombre, apellido=@apellido, email=@email, id_persona=@id_persona " + "WHERE id_usuario=@id", SqlConn, transaction); cmdUpdate.Parameters.Add("@id", SqlDbType.Int).Value = usuario.ID; CargarParametrosSql(cmdUpdate, usuario); cmdUpdate.ExecuteNonQuery(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Exception ExcepcionManejada = new Exception("Error al actualizar usuario y persona", ex); throw ExcepcionManejada; } } catch (Exception) { throw; } finally { CloseConnection(); } }
protected void Insert(Usuario usuario, Persona persona) { PersonaAdapter personaData = new PersonaAdapter(); try { OpenConnection(); SqlTransaction transaction = SqlConn.BeginTransaction(); SqlCommand cmdInsert; try { cmdInsert = new SqlCommand( "INSERT INTO personas(nombre, apellido, direccion, email, telefono, fecha_nac, legajo, tipo_persona, id_plan)" + "VALUES (@nombre, @apellido, @direccion, @email, @telefono, @fecha_nac, @legajo, @tipo_persona, @id_plan)" + "SELECT @@identity", SqlConn, transaction); personaData.CargarParametrosSql(cmdInsert, persona); persona.ID = decimal.ToInt32((decimal)cmdInsert.ExecuteScalar()); usuario.IdPersona = persona.ID; cmdInsert = new SqlCommand( "INSERT INTO usuarios(nombre_usuario, clave, habilitado, nombre, apellido, email, id_persona)" + "VALUES (@nombre_usuario, @clave, @habilitado, @nombre, @apellido, @email, @id_persona)" + "SELECT @@identity", SqlConn, transaction); CargarParametrosSql(cmdInsert, usuario); usuario.ID = decimal.ToInt32((decimal)cmdInsert.ExecuteScalar()); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Exception ExcepcionManejada = new Exception("Error al insertar usuario y persona", ex); throw ExcepcionManejada; } } catch (Exception) { throw; } finally { CloseConnection(); } }
protected void Delete(int idCurso, int idTitular, DocenteCurso auxiliar) { try { OpenConnection(); SqlTransaction transaction = SqlConn.BeginTransaction(); SqlCommand cmdDelete; try { cmdDelete = new SqlCommand("DELETE docentes_cursos WHERE id_dictado=@id", SqlConn, transaction); cmdDelete.Parameters.Add("@id", SqlDbType.Int).Value = idTitular; cmdDelete.ExecuteNonQuery(); if (auxiliar != null) { cmdDelete = new SqlCommand("DELETE docentes_cursos WHERE id_dictado=@id", SqlConn, transaction); cmdDelete.Parameters.Add("@id", SqlDbType.Int).Value = auxiliar.ID; cmdDelete.ExecuteNonQuery(); } cmdDelete = new SqlCommand("DELETE cursos WHERE id_curso=@id", SqlConn, transaction); cmdDelete.Parameters.Add("@id", SqlDbType.Int).Value = idCurso; cmdDelete.ExecuteNonQuery(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Exception ExcepcionManejada = new Exception("Error al eliminar curso", ex); throw ExcepcionManejada; } } catch (Exception) { throw; } finally { CloseConnection(); } }
protected void Update(Curso curso, DocenteCurso titular, DocenteCurso auxiliar) { DocenteCursoAdapter docenteCursoData = new DocenteCursoAdapter(); try { OpenConnection(); SqlTransaction transaction = SqlConn.BeginTransaction(); SqlCommand cmdUpdate; try { cmdUpdate = new SqlCommand( "UPDATE cursos SET id_materia=@id_materia,id_comision=@id_comision," + "anio_calendario=@anio_calendario,cupo=@cupo " + "WHERE id_curso=@id", SqlConn, transaction); cmdUpdate.Parameters.Add("@id", SqlDbType.Int).Value = curso.ID; CargarParametrosSql(cmdUpdate, curso); cmdUpdate.ExecuteNonQuery(); cmdUpdate = new SqlCommand( "UPDATE docentes_cursos SET id_curso=@id_curso,id_docente=@id_docente," + "cargo=@cargo WHERE id_dictado=@id", SqlConn, transaction); cmdUpdate.Parameters.Add("@id", SqlDbType.Int).Value = titular.ID; docenteCursoData.CargarParametrosSql(cmdUpdate, titular); cmdUpdate.ExecuteNonQuery(); if (auxiliar != null) { switch (auxiliar.State) { case BusinessEntity.States.New: auxiliar.IdCurso = curso.ID; cmdUpdate = new SqlCommand( "INSERT INTO docentes_cursos(id_curso,id_docente,cargo)" + "VALUES (@id_curso,@id_docente,@cargo)" + "SELECT @@identity", SqlConn, transaction); docenteCursoData.CargarParametrosSql(cmdUpdate, auxiliar); auxiliar.ID = decimal.ToInt32((decimal)cmdUpdate.ExecuteScalar()); break; case BusinessEntity.States.Modified: cmdUpdate = new SqlCommand( "UPDATE docentes_cursos SET id_curso=@id_curso,id_docente=@id_docente," + "cargo=@cargo WHERE id_dictado=@id", SqlConn, transaction); cmdUpdate.Parameters.Add("@id", SqlDbType.Int).Value = auxiliar.ID; docenteCursoData.CargarParametrosSql(cmdUpdate, auxiliar); cmdUpdate.ExecuteNonQuery(); break; case BusinessEntity.States.Deleted: cmdUpdate = new SqlCommand("DELETE docentes_cursos WHERE id_dictado=@id", SqlConn, transaction); cmdUpdate.Parameters.Add("@id", SqlDbType.Int).Value = auxiliar.ID; cmdUpdate.ExecuteNonQuery(); break; } } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Exception ExcepcionManejada = new Exception("Error al insertar curso", ex); throw ExcepcionManejada; } } catch (Exception) { throw; } finally { CloseConnection(); } }
protected void Insert(Curso curso, DocenteCurso titular, DocenteCurso auxiliar) { DocenteCursoAdapter docenteCursoData = new DocenteCursoAdapter(); try { OpenConnection(); SqlTransaction transaction = SqlConn.BeginTransaction(); SqlCommand cmdInsert; try { cmdInsert = new SqlCommand( "INSERT INTO cursos(id_materia,id_comision,anio_calendario,cupo)" + "VALUES (@id_materia,@id_comision,@anio_calendario,@cupo)" + "SELECT @@identity", // Esta última línea es para recuperar el ID autogenerado desde la bd. SqlConn, transaction); CargarParametrosSql(cmdInsert, curso); // Se obtiene el ID autogenerado y se lo guarda a la entidad. curso.ID = decimal.ToInt32((decimal)cmdInsert.ExecuteScalar()); titular.IdCurso = curso.ID; cmdInsert = new SqlCommand( "INSERT INTO docentes_cursos(id_curso,id_docente,cargo)" + "VALUES (@id_curso,@id_docente,@cargo)" + "SELECT @@identity", // Esta última línea es para recuperar el ID autogenerado desde la bd. SqlConn, transaction); docenteCursoData.CargarParametrosSql(cmdInsert, titular); // Se obtiene el ID autogenerado y se lo guarda a la entidad. titular.ID = decimal.ToInt32((decimal)cmdInsert.ExecuteScalar()); if (auxiliar != null) { auxiliar.IdCurso = curso.ID; cmdInsert = new SqlCommand( "INSERT INTO docentes_cursos(id_curso,id_docente,cargo)" + "VALUES (@id_curso,@id_docente,@cargo)" + "SELECT @@identity", // Esta última línea es para recuperar el ID autogenerado desde la bd. SqlConn, transaction); docenteCursoData.CargarParametrosSql(cmdInsert, auxiliar); // Se obtiene el ID autogenerado y se lo guarda a la entidad. auxiliar.ID = decimal.ToInt32((decimal)cmdInsert.ExecuteScalar()); } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Exception ExcepcionManejada = new Exception("Error al insertar curso", ex); throw ExcepcionManejada; } } catch (Exception) { throw; } finally { CloseConnection(); } }
/// <summary> /// 向目标表中添加数据 /// </summary> /// <param name="dt">目标数据</param> /// <param name="pairs">目标表字段信息</param> /// <param name="isRollack">错误时是否回滚,true表示回滚,否则跳过错误行,并提供错误报告</param> /// <returns></returns> public ResultModel AddData(DataTable dt, Dictionary <string, Type> pairs, bool isRollack) { var columns = Common.GetColumnNamesFromDt(dt); if (columns.Count <= 0) { return(new ResultModel { IsHaveReport = false, ErrMsg = "没有数据导入!" }); } dt.Columns.Add(new DataColumn("ErrMsg")); //复制一个新的表格 DataTable newDt = new DataTable(); foreach (var item in columns) { newDt.Columns.Add(new DataColumn(item)); } newDt.Columns.Add(new DataColumn("ErrMsg")); int num = 0; int errNum = 0; string fileName = ""; using (SqlConn) { using (SqlCommand cmd = SqlConn.CreateCommand()) { try { SqlConn.Open(); //开启一个事务 SqlTransaction myTrans = null; if (isRollack) { myTrans = SqlConn.BeginTransaction(); cmd.Transaction = myTrans; } foreach (DataRow dr in dt.Rows) { //构造语句 string sqlStr = Common.GetSqlStrByDataRow(dr, columns, pairs, TableName); cmd.CommandText = sqlStr; try { //执行语句 num += cmd.ExecuteNonQuery(); } catch (Exception ex) { if (isRollack) { if (myTrans != null) { myTrans.Rollback(); } throw ex; } else { errNum++; //不回滚,产生上传报告 dr["ErrMsg"] = ex.Message; newDt.Rows.Add(dr.ItemArray); } } } //如果选择跳过,并且期间产生异常,产生异常报告 if (!isRollack && newDt.Rows.Count > 0) { fileName = ExcelHelper.DataTable2File(newDt); //仅出错的在报告中体现 //fileName = ExcelHelper.DataTable2File(dt); //所有数据都在报告中 } if (isRollack) { if (myTrans != null) { myTrans.Commit(); } } } catch (Exception ex) { throw ex; } } } if (errNum > 0) { return(new ResultModel { IsHaveReport = true, ErrMsg = $"导入成功!成功导入{num}条,失败{errNum}条!详见错误报告:{fileName},立即查看报告?", FileName = fileName }); } else { return(new ResultModel { IsHaveReport = false, ErrMsg = $"导入成功!共计 {num} 条数据被导入!" }); } }