如何使用 dateTimePicker 将日期插入 SQL 数据库日期列?
Posted
技术标签:
【中文标题】如何使用 dateTimePicker 将日期插入 SQL 数据库日期列?【英文标题】:How to INSERT date into SQL database date column using dateTimePicker? 【发布时间】:2015-03-21 11:05:45 【问题描述】:我在 sql 数据库中有一个 Date
类型的生日列
在我的应用程序中,我使用dateTimePicker
来获取出生日期
但是当我尝试插入取自dateTimePicker
的date
时:
我收到一个错误:
'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();
【问题讨论】:
***.com/questions/12957635/… SQL Injection alert - 你应该不将你的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 还要检查表中生日的数据类型 【参考方案1】:您真正应该做的是使用 参数 来避免 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();
此外,建议将您的 SqlConnection
、SqlCommand
和 SqlDataReader
放入 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();
【讨论】:
【参考方案2】:如前所述,最佳实践是使用参数,但如果您确实需要使用源代码中的 TSQL 语句,则应使用格式为日期的日期:yyyymmdd
cmd.CommandText="INSERT INTO person (birthdate) VALUES('"+dateTimePicker.Value.Date.ToString("yyyyMMdd")+"')";
【讨论】:
【参考方案3】:尝试包括引号:
cmd.CommandText="INSERT INTO person (birthdate) VALUES('"+dateTimePicker.Value.Date+"')";
我也建议使用参数。
【讨论】:
【参考方案4】:试试这个字符串格式:
cmd.CommandText="INSERT INTO person(birthdate)VALUES('"+dateTimePicker.Value.Date+"')";
【讨论】:
你在VALUES
之前忘记了一个空格【参考方案5】:
dateTimePicker
将值存储为 1/1/1900 12:00:00 AM
,因此如果您尝试存储它,则应使用 DATETIME
,因为 DATETIME 的格式为:YYYY-MM-DD HH:MI:SS
。
您可以使用
打印dateTimePicker
值
MessageBox.Show(dateTimePicker.Value.ToString());
亲眼看看。
【讨论】:
添加更多信息。以上是关于如何使用 dateTimePicker 将日期插入 SQL 数据库日期列?的主要内容,如果未能解决你的问题,请参考以下文章
您如何使用 JS 或 jQuery 从引导 datetimepicker 中控制台记录日期 [重复]