如何使用 dateTimePicker 将日期插入 SQL 数据库日期列?

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

我在 sql 数据库中有一个 Date 类型的生日列

在我的应用程序中,我使用 dateTimePicker 来获取出生日期

但是当我尝试插入取自 dateTimePickerdate 时:

我收到一个错误:

Incorrect syntax near '12'

当我尝试调试代码时,我发现从 dateTimePicker 中获取的值是

日期 = {3/21/2015 12:00:00 AM}

代码:

//cmd is sql command
cmd.CommandText="INSERT INTO person (birthdate) VALUES("+dateTimePicker.Value.Date+")";
//con is sql connection
con.Open();
cmd.ExecuteNonQuery();
con.Close();

尝试包括引号:

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

我也建议使用参数。

如前所述,最佳做法是使用参数,但如果您确实需要使用源代码中的 TSQL 语句,则应使用以下格式的日期:yyyymmdd

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

真正 应该做的是使用 参数 来避免 SQL 注入攻击 - 它也让你摆脱字符串格式化日期 - 也是一件好事!

//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();

此外,推荐的最佳做法是将 SqlConnectionSqlCommandSqlDataReader 放入 using(....) { .... } 块中以确保正确处理:

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();
} 

试试这个字符串格式:

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

dateTimePicker 将值存储为 1/1/1900 12:00:00 AM,因此如果您尝试存储它,您应该使用 DATETIME,因为 DATETIME 的格式是:YYYY-MM-DD HH:MI:SS

您可以使用

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

自己看看。