Обновление базы данных с условиями с помощью C#
У меня есть проект ASP.NET.
В этом проекте у меня есть 2 расширений календаря (например, указатели даты и времени для выбора дат), 1 выпадающий список, 4 текстовых поля и 1 кнопка.
В моей базе данных у меня есть эти столбцы;
[ID] - [NAME] - [WORKTYPE] - [MON] - [TUE] - [WED] - [THU] - [FRI] - [SAT] - [SUN] -
[TOTAL] - [DAYS] - [PENALTY1] - [PENALTY2] - [CORRECTION] - [DATE] -
[RAWTIME] - [ACCUMULATIVE]
Все эти столбцы integer
, просто имя и тип работы varchar
,
Здесь вопрос. Мне нужно обновить значения, которые я собираюсь записать, они должны пойти и обновить строки между выбранными датами и выбранными сотрудниками. Я надеюсь, что я объяснил себе.
Я написал этот код C# на стороне.cs.
protected void Button1_Click(object sender, EventArgs e)
{
string strSQL = "UPDATE informations SET DAYS= @DAYS, PENALTY1 = @PENALTY1, PENALTY2 = @PENALTY2, CORRECTION = @CORRECTION WHERE DATE BETWEEN @DATE1 AND @DATE2 AND ID = @ID ";
string connStr = WebConfigurationManager.ConnectionStrings["asgdb01ConnectionString"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand comm = new SqlCommand())
{
comm.Connection = conn;
comm.CommandText = strSQL;
comm.CommandType = CommandType.Text;
comm.Parameters.AddWithValue("@ID", Int32.Parse(DropDownList1.SelectedItem.Value));
comm.Parameters.AddWithValue("@DATE1", CalendarExtender1.SelectedDate);
comm.Parameters.AddWithValue("@DATE2", CalendarExtender2.SelectedDate);
comm.Parameters.Add(new SqlParameter("@DAYS", Int32.Parse(TextBox3.Text)));
comm.Parameters.Add(new SqlParameter("@PENALTY1", Int32.Parse(TextBox4.Text)));
comm.Parameters.Add(new SqlParameter("@PENALTY2", Int32.Parse(TextBox5.Text)));
comm.Parameters.Add(new SqlParameter("@CORRECTION", Int32.Parse(TextBox6.Text)));
try
{
conn.Open();
int i = comm.ExecuteNonQuery();
conn.Close();
if (i > 0)
{
Response.Write("Success ! ");
}
else
{
Response.Write("No record was updated ");
}
}
catch (SqlException ex)
{
Response.Write(ex.ToString());
}
}
}
Это дает эту огромную ошибку в верхней части моей страницы, когда я нажимаю кнопку рассчитать
System.Data.SqlClient.SqlException (0x80131904): параметризованный запрос '(@ID int,@DATE1 nvarchar(4000),@DATE2 nvarchar(4000),@DAYS int' 'ожидает параметр'@DATE1 ', который не был в комплект поставки.
Мне очень нужна твоя помощь, я жду твоих ответов, друзья.
Большое спасибо.
2 ответа
CalendarExtender1.SelectedDate имеет значение null - либо потому, что он должен быть нулевым, либо он еще не был обновлен из параметров веб-запроса
вызов Parameters.AddWithValue со вторым аргументом null (почти) аналогичен тому, что вообще не вызывал его, если вам нужно передать null в параметре SQL, используйте DbNull.Value
Я решил свою проблему.
Потому что я ожидаю от моего CalendarExtender для хранения значения. Но как это может быть..
Мои текстовые поля получают значения.. поэтому он должен измениться так;
comm.Parameters.AddWithValue("@DATE1", Convert.ToDateTime(TextBox1.Text));
comm.Parameters.AddWithValue("@DATE2", Convert.ToDateTime(TextBox2.Text));
спасибо, что предупредили меня о значениях NULL..