我有一張表,我想用一個簡單的更新命令進行更新。用於更新的sqlcommand
protected void UpdateButton_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("UPDATE KPI_DETAILS_TABLE SET KPI1_Status =
@KPI1_Status, KPI2_Status = @KPI2_Status, KPI3_Status = @KPI3_Status,
KPI4_Status = @KPI4_Status, KPI5_Status = @KPI5_Status, KPI6_Status =
@KPI6_Status, Overall_Status= @Overall_Status WHERE TokenID = '" +
DropDownList1.SelectedItem.Text + "' AND TimeSet = '"
+ currentdate + "'", connection);
cmd.Parameters.AddWithValue("@KPI1_Status", DropboxKPI1.SelectedItem.Text);
cmd.Parameters.AddWithValue("@KPI2_Status", DropboxKPI2.SelectedItem.Text);
cmd.Parameters.AddWithValue("@KPI3_Status", DropboxKPI3.SelectedItem.Text);
cmd.Parameters.AddWithValue("@KPI4_Status", DropboxKPI4.SelectedItem.Text);
cmd.Parameters.AddWithValue("@KPI5_Status", DropboxKPI5.SelectedItem.Text);
cmd.Parameters.AddWithValue("@KPI6_Status", DropboxKPI6.SelectedItem.Text);
cmd.Parameters.AddWithValue("@Overall_Status", FinalStatus.SelectedItem.Text);
try
{
cmd.ExecuteNonQuery();
Error1.Text = "KPI Status Successfully Updated !!";
}
catch { Error1.Text = "Error during Updating status of KPIs"; }
finally { connection.Close(); }
}
但是它拋出下面的異常錯誤:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
數據類型datetime
在數據庫中唯一的列是TimeSet
。但是currentdate
也是數據類型datetime
。
DateTime currentdate = DateTime.Now.ToLocalTime();
那麼爲什麼這個錯誤會彈出?請幫忙。
我得到了你說的。感謝您的寶貴意見。 但我有其他地方使用datetime.now.localtime()的這個值。所以不能直接在這裏使用該方法。 – scooby 2011-04-21 08:02:45
可以解釋你的方法如何保護從sql注入的應用程序? – scooby 2011-04-21 08:12:05
「如果您將數據訪問代碼作爲問題的一部分發布到論壇中,並且人們回答」注意SQL注入!「或」使用參數查詢!「,您可能會疑惑他們爲什麼會這麼擔心......」 http://forums.asp.net/p/1568268/3920715.aspx ..關於Sql Injection和參數化quires的更多信息請查看這篇文章 – lKashef 2011-04-21 08:15:17