Я бы сделал две вещи:
1) переместить создание параметра из цикла - вам нужно создать его только один раз
2) не используйте метод AddWithValue
, так как этот метод должен угадать тип данных - и он может иногда ошибаться
Так что используйте это:
// Intializing sql statement
string fields = "(TimeSheetID, Date)";
string parm = "(@TimeSheetID, @Date)";
string sqlStatement = "insert into TimeSheetWeeks" + fields + "Values" + parm;
using(SqlConnection connection = DataAccess.getConnection())
using(SqlCommand comm = new SqlCommand(sqlStatement, connection))
{
comm.Parameters.Add("@TimeSheetID", SqlDbType.VarChar, 50); // just guessing
comm.Parameters.Add("@Date", SqlDbType.DateTime);
try
{
connection.Open();
for (int i = 0; i < row; i++)
{
comm.Parameters["@TimeSheetID"] = timeSheetID;
comm.Parameters["@Date"] = txtDate[i];
comm.ExecuteNonQuery();
}
connection.Close();
}
catch (Exception ex)
{
Utilities.LogError(ex);
throw;
}
}
Как уже отмечали другие, ваш синтаксис для
txtDate[counter] = "GetDATE()+"+counter;
тоже немного странно - что ты здесь пытаешься сделать ?? Что вы пытаетесь добавить - counter
дней? Месяцы? Много лет? Секунды? `Не совсем понятно ....
Может быть, вы можете «переместить» эту логику в точку, в которой вы устанавливаете значение даты:
for (int i = 0; i < row; i++)
{
comm.Parameters["@TimeSheetID"] = timeSheetID;
comm.Parameters["@Date"] = DateTime.Today.AddDays(i); // is that what you need?
comm.ExecuteNonQuery();
}