我建議不要使用從應用程序服務器向數據庫中插入值的時間。最基本的例子是如何可能出錯的是,您可以將兩臺服務器設置爲不同的時區,並使用相同的數據庫。什麼服務器的時間是正確的時間?
另一件事是當您使用內聯SQL語句時,日期時間必須轉換爲字符串。如果應用程序服務器和數據庫服務器設置爲不同的文化,則需要非常小心,以便在插入May 5th(02.05)的時候插入Feb 5th(02.05)。
當然,所有這些問題都是可以避免的,但爲什麼RDBMS可以爲我們做所有這些工作呢?
順便說一句,即使你不想使用存儲過程,使用參數。
此代碼應被重新格式化,如:
string query = "INSERT INTO Feedback (user_Name, date_of_, Praise) VALUES (@username, getdate(), @praise)";
SqlCommand cmd = new SqlCommand(query, con);
SqlParameter param = new SqlParameter("@username", SqlDbType.Text);
param.Value = text1;
cmd.Parameters.Add(param);
param = new SqlParameter("@praise", SqlDbType.Text);
param.Value = text2;
cmd.Parameters.Add(param);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
使用SqlParameters,而不是一個純文本 – Stecya 2011-03-01 13:17:25
哇,你的代碼是一個SQL注入攻擊完全開放..!這兩個文本框將使任何黑客能夠完全分析您的Web應用程序並危及您的數據庫。改用參數化查詢! – code4life 2011-03-01 14:49:28