使用Date列将日期插入到sql表中

时间:2014-02-12 22:07:23

标签: c# sql datetime

您好,感谢您的阅读。

我正在尝试将当前日期插入到我的表中,但我无法弄清楚如何正确编写它。

这是我的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的值。这是我喜欢将当前日期传递到我的表中的函数。

我希望你能帮助我,因为我没有找到答案。

感谢:)

4 个答案:

答案 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的情况。

enter image description here

要解决此问题,请按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