我建议不要使用从应用程序服务器向数据库中插入值的时间。最基本的例子是如何可能出错的是,您可以将两台服务器设置为不同的时区,并使用相同的数据库。什么服务器的时间是正确的时间?
另一件事是当您使用内联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