How to INSERT date into SQL database date column using dateTimePicker?

前端 未结 5 1589
暗喜
暗喜 2020-12-16 08:38

I have a birthdate column of type Date in sql database

And in my application I use a dateTimePicker to get the birth date

But when

相关标签:
5条回答
  • 2020-12-16 09:20

    What you really should do is use parameters to avoid SQL injection attacks - and it also frees you from string formatting dates - also a good thing!

    //cmd is sql command
    cmd.CommandText = "INSERT INTO dbo.Person(birthdate) VALUES(@Birthdate);";
    
    cmd.Parameters.Add("@Birthdate", SqlDbType.Date).Value = dateTimePicker.Value.Date;
    
    //con is sql connection
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
    

    Also, it's a recommend best practice to put your SqlConnection, SqlCommand and SqlDataReader into using(....) { .... } blocks to ensure proper disposal:

    string connectionString = ".......";
    string query = "INSERT INTO dbo.Person(birthdate) VALUES(@Birthdate);";
    
    using (SqlConnection con = new SqlConnection(connectionString))
    using (SqlCommand cmd = new SqlCommand(query, conn))
    {
         cmd.Parameters.Add("@Birthdate", SqlDbType.Date).Value = dateTimePicker.Value.Date;
    
         con.Open();
         cmd.ExecuteNonQuery();
         con.Close();
    } 
    
    0 讨论(0)
  • 2020-12-16 09:20

    Try including quotes:

    cmd.CommandText="INSERT INTO person (birthdate) VALUES('"+dateTimePicker.Value.Date+"')";
    

    I'd recommend using parameters too.

    0 讨论(0)
  • 2020-12-16 09:30

    Try this as string format:

    cmd.CommandText="INSERT INTO person(birthdate)VALUES('"+dateTimePicker.Value.Date+"')";
    
    0 讨论(0)
  • 2020-12-16 09:36

    dateTimePicker stores values as 1/1/1900 12:00:00 AM so you should use DATETIME if you're trying to store it since DATETIME's format is: YYYY-MM-DD HH:MI:SS.

    You can print the dateTimePicker value using

    MessageBox.Show(dateTimePicker.Value.ToString());
    

    to see for yourself.

    0 讨论(0)
  • 2020-12-16 09:39

    As mentioned before the best practice is to use parameters, but if you really need to use a TSQL statement from source you should use date in the format: yyyymmdd

    cmd.CommandText="INSERT INTO person (birthdate) VALUES('"+dateTimePicker.Value.Date.ToString("yyyyMMdd")+"')";
    
    0 讨论(0)
提交回复
热议问题