您好,感谢您的阅读。
我正在尝试将当前日期插入到我的表中,但我无法弄清楚如何正确编写它。
这是我的C#代码:
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString);
conn.Open();
string Comment = UserWriteComment.Text;
string ID = DetailedID.Text;
string Name = DetailedName.Text;
string UniqueID = lblID.Text;
string query = "INSERT INTO Comment(TicketID, Name, Comments, UserID, Date)" + "Values('" + ID + "', '" + Name + "', '" + Comment + "', '" + UniqueID + "', '" + Date + "')";
using (SqlCommand com = new SqlCommand(query, conn))
{
com.ExecuteNonQuery();
UserWriteComment.Text = "";
}
在Query中,有一个名为Date的值。这是我喜欢将当前日期传递到我的表中的函数。
我希望你能帮助我,因为我没有找到答案。
感谢:)
答案 0 :(得分:7)
使用DateTime.Now
或(在数据库中通过sql)GetDate()
。但更重要的是,使用sql-parameters来防止sql-injection和转换/本地化问题:
string insertSql = @"INSERT INTO Comment(TicketID, Name, Comments, UserID, Date)
Values(@ID, @Name, @Comment, @UniqueID, @Date)";
using (var conn = new SqlConnection("...."))
using (var com = new SqlCommand(insertSql, conn))
{
com.Parameters.AddWithValue("@ID", ID);
com.Parameters.AddWithValue("@Name", Name);
com.Parameters.AddWithValue("@Comment", Comment);
com.Parameters.AddWithValue("@UniqueID", UniqueID);
com.Parameters.AddWithValue("@Date", DateTime.Now);
conn.Open();
com.ExecuteNonQuery();
}
using
- 语句确保即使发生错误也会处理/关闭非连接资源(如连接)。
答案 1 :(得分:4)
使用DateTime.Now
代替Date
。即将INSERT
行更新为以下内容。
string query = "INSERT INTO Comment(TicketID, Name, Comments, UserID, Date)"
+ "Values('" + ID + "', '" + Name + "', '" + Comment + "', '"
+ UniqueID + "', '" + DateTime.Now + "')";
P.S:你真的应该使用Parameterize语句来避免Bobby Tables的情况。
要解决此问题,请按his answer中的@Tim所示实现它:
答案 2 :(得分:0)
而不是日期,请尝试使用以下
DateTime.Now
可以帮助你的另一个功能是
GETDATE()
答案 3 :(得分:0)
最好通过以下方式使用SQL Server的日期插入:
GetDate()
或
Convert(Varchar, GetDate(), 101)
注意:将GetDate()
值转换为varchar
类型101会将值缩短为date w/o time stamp
。