如何使用 Visual Studio 2013 将 SQL 服务器中的字符串保存为 SqlDateType?

How to save a string in SQL Server as SqlDateType by using Visual Studio 2013?

如何使用 Visual Studio 2013 将 SQL 服务器中的字符串保存为 SqlDateType?我要保存的字符串是 1996-25-04。我正在使用 C#。

到目前为止我已经试过了

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=sms;Persist Security Info=True;User ID=sa;Password=pass");
con.Open();

string sql = "  insert into Staff_Management values( '" + TM_Add_BirthDate.Value.ToString() + "' ";

SqlCommand cmd = new SqlCommand(sql, con);
cmd.ExecuteNonQuery();
con.Close();

MessageBox.Show("Data saved successfully");

你应该永远不要像这样将你的SQL语句连接在一起!这为 SQL 注入攻击打开了所有大门 - 并导致字符串和日期值出现问题。

改用此代码 - 使用 参数化查询:

// define the query - and I'd recommend to always define the name of the columns you're inserting into
string query = "INSERT INTO dbo.Staff_Management(name-of-column-here) VALUES (@Birthdate);";

// define connection and command
// also: do **NOT** use the `sa` user for your production code! 
using (SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=sms;Persist Security Info=True;User ID=sa;Password=pass"))
using (SqlCommand cmd = new SqlCommand(query, con))
{
    // add the parameter - and use the proper datatype - don't convert all dates to strings all the time!
    cmd.Parameters.Add("@Birthdate", SqlDbType.Date).Value = TM_Add_Birthdate.Value;

    // open connection, execute INSERT query, close connection - done
    con.Open(); 
    cmd.ExecuteNonQuery();
    con.Close();

    MessageBox.Show("Data saved successfully");
}