C# 使用c从winform将日期保存到sql数据库#
我正在使用c#处理winforms,其中我有一个类用户具有datetime dob变量,该变量的值被插入到数据库中(数据库列的类型是date) 用户类中的函数是:C# 使用c从winform将日期保存到sql数据库#,c#,sql-server,winforms,datetimepicker,datetime-format,C#,Sql Server,Winforms,Datetimepicker,Datetime Format,我正在使用c#处理winforms,其中我有一个类用户具有datetime dob变量,该变量的值被插入到数据库中(数据库列的类型是date) 用户类中的函数是: { string format = "yyyy-MM-dd"; if (mail.IsMatch(id) && password.Length >= 8 && password == confrmpass)
{
string format = "yyyy-MM-dd";
if (mail.IsMatch(id) && password.Length >= 8 && password == confrmpass)
{
con.Open();
cmd = new SqlCommand($"insert into UserInfo (Username,Password,[Full Name],Email,Address,[Date of birth]) values ('{username}','{password}','{name}','{id}','{address}','{dob.ToString(format)}'", con);
cmd.ExecuteNonQuery();
}
}
接下来,该类对象以以下形式生成:
User user1 = new User();
user1.register(textname.Text.ToString(),textemail.Text,textaddress.Text,textuser.Text,textpassword.Text,textconfirmpass.Text,metroDateTime1.Value.Date);
其中使用datetimepicker传递日期
现在我犯了错误
'Incorrect syntax near '2020-08-31'.'
sql日期格式相同时出错的原因。
如何解决此问题。您忘记关闭DOB后打开的值,请在下面编辑
{
string format = "yyyy-MM-dd";
if (mail.IsMatch(id) && password.Length >= 8 && password == confrmpass)
{
con.Open();
cmd = new SqlCommand($"insert into UserInfo (Username,Password,[Full Name],Email,Address,[Date of birth]) values ('{username}','{password}','{name}','{id}','{address}','{dob.ToString(format)}')", con);
cmd.ExecuteNonQuery();
}
}
你需要做的第一件事是。然后,您需要了解原因。使用SQL参数。我只想指出,虽然这解决了发布的问题,但这不是一个好的解决方案。每个人都需要对他们的SQL进行参数化。非常感谢,我犯了一个愚蠢的错误,我想知道几个小时后出了什么问题。谢谢lot@Maria请不要使用这样的代码;它允许任何人完全接管你的数据库,它泄露密码,它在不同的日期位置中断。这个代码有太多的问题;请阅读我们发布的链接。@borrelito-您可以使用
SqlCommand
和参数化。它们在任何方面都不是相互排斥的。事实上,这正是链接副本中的操作方式。