Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c从winform将日期保存到sql数据库#_C#_Sql Server_Winforms_Datetimepicker_Datetime Format - Fatal编程技术网

C# 使用c从winform将日期保存到sql数据库#

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)

我正在使用c#处理winforms,其中我有一个类用户具有datetime dob变量,该变量的值被插入到数据库中(数据库列的类型是date)

用户类中的函数是:

        {
            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
和参数化。它们在任何方面都不是相互排斥的。事实上,这正是链接副本中的操作方式。