我有一個ASP.NET項目。使用C#使用條件更新數據庫
在這個項目上,我有2個日曆擴展(如datetimepickers來選擇日期),1個下拉列表,4個文本框和1個按鈕。
在我的數據庫中,我有這些列;
[ID] - [NAME] - [WORKTYPE] - [MON] - [TUE] - [WED] - [THU] - [FRI] - [SAT] - [SUN] -
[TOTAL] - [DAYS] - [PENALTY1] - [PENALTY2] - [CORRECTION] - [DATE] -
[RAWTIME] - [ACCUMULATIVE]
所有這些列是integer
,只是名稱和worktype是varchar
。
這是問題。我需要更新我要編寫的值,他們必須去更新所選日期和所選僱員之間的行。我希望我解釋一下自己。
我在.cs端寫了這個C#代碼。
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),@天 INT,」預計參數 '@ DATE1',但未提供。
我需要你的幫助厲害,我在等你的回答我的朋友。
非常感謝。
什麼問題? – ChrisF
提到你的問題,你有什麼錯誤。 – Arshad
請爲你的參數.add語句,因爲它出現在你的strSQL – Saju