private SqlParameter[] GetSqlParametersToRewriteMainTable(DataRow row, UnitMeasureEnum unitMeasure) { SqlParameter[] sqlParameters = new SqlParameter[10]; sqlParameters[0] = new SqlParameter("@N_pp", SqlDbType.Int); sqlParameters[0].Value = row["N_пп"]; sqlParameters[1] = new SqlParameter(@"groupMuscle", SqlDbType.NVarChar, 50); sqlParameters[1].Value = row["Група_мязів"]; sqlParameters[2] = new SqlParameter("@typeTraining", SqlDbType.NVarChar, 255); sqlParameters[2].Value = row["Вид_тренування"]; sqlParameters[3] = new SqlParameter(@"exercise", SqlDbType.NVarChar, 255); sqlParameters[3].Value = row["Вправа"]; sqlParameters[4] = new SqlParameter(@"encumbrance", SqlDbType.NVarChar, 255); sqlParameters[4].Value = row["Обтяження"]; sqlParameters[5] = new SqlParameter(@"position", SqlDbType.NVarChar, 255); sqlParameters[5].Value = row["Положення"]; DefineSqlParameterWeight(row, unitMeasure, out sqlParameters[6], out sqlParameters[7]); sqlParameters[8] = new SqlParameter(@"reps", SqlDbType.Int); sqlParameters[8].Value = row["К_сть_повторень_з_max_вагою"]; sqlParameters[9] = new SqlParameter(@"sets", SqlDbType.Int); sqlParameters[9].Value = row["Загальна_к_сть_підходів"]; return(sqlParameters); }
public void WriteDB(DataTable grid, SqlConnection connect, UnitMeasureEnum unitMeasure) { if (connect.State != ConnectionState.Open) { notification.MessageInvoke(false, "Помилка зі з'єднанням до бази даних"); return; } command.CommandType = CommandType.StoredProcedure; command.CommandText = "spWriteTrain"; SqlTransaction tranPlSave = null; try { tranPlSave = connect.BeginTransaction("tranPlSave"); command.Transaction = tranPlSave; foreach (DataRow row in grid.Rows) { command.Parameters.Clear(); SqlParameter[] sqlParameters = GetSqlParametersToRewriteMainTable(row, unitMeasure); if (sqlParameters[6].Value == null) { return; } command.Parameters.AddRange(sqlParameters); command.ExecuteNonQuery(); } tranPlSave.Commit();//підтвердження всіх змін у базі даних } catch { if (tranPlSave != null) { tranPlSave.Rollback();//Виконати відкад у випадку невдалого записування } notification.MessageInvoke(false, $"Таблицю не вдалося записати в базу даних"); return; } notification.MessageInvoke(true, "Таблиця записана в базу даних"); }
private void DefineSqlParameterWeight(DataRow row, UnitMeasureEnum unitMeasure, out SqlParameter parameterWeightKg, out SqlParameter parameterWeightLb) { parameterWeightKg = new SqlParameter(@"weightKg", SqlDbType.Int); parameterWeightLb = new SqlParameter(@"weightLb", SqlDbType.Int); if (unitMeasure == UnitMeasureEnum.Kg) { parameterWeightKg.Value = row["Max_вага"]; parameterWeightLb.Value = 0; } else if (unitMeasure == UnitMeasureEnum.Lb) { parameterWeightKg.Value = 0; parameterWeightLb.Value = row["Max_вага"]; } else { notification.MessageInvoke(false, "Неправильно задано одиницю вимірювання"); } }
public UnitMeasure(UnitMeasureEnum unitMeasure, Notification notification) { this.unitMeasure = unitMeasure; this.notification = notification; }