C# 错误-将varchar数据类型转换为datetime数据类型导致值超出范围-sql

C# 错误-将varchar数据类型转换为datetime数据类型导致值超出范围-sql,c#,sql,database,C#,Sql,Database,我是一名中学生,目前正在做一个涉及数据库的软件开发项目,对sql几乎一无所知,目前为止,我已经足够使用给我的一本指南了,但我无法摆脱这个错误。我已经把我需要的截图链接起来了,但是如果我遗漏了任何截图,我很乐意知道。我已经在这个网站和其他网站上彻底搜索了这个错误,并决定这是一个不同的情况,然后通常会造成这个错误,或者我的技术知识是如此有限,我无法区分这个差异。我知道毫无疑问我写的代码很差,但是没有时间对所有的东西进行彻底的修改。我不允许直接在上面添加图片,所以我似乎在下面链接了它们 请找

我是一名中学生,目前正在做一个涉及数据库的软件开发项目,对sql几乎一无所知,目前为止,我已经足够使用给我的一本指南了,但我无法摆脱这个错误。我已经把我需要的截图链接起来了,但是如果我遗漏了任何截图,我很乐意知道。我已经在这个网站和其他网站上彻底搜索了这个错误,并决定这是一个不同的情况,然后通常会造成这个错误,或者我的技术知识是如此有限,我无法区分这个差异。我知道毫无疑问我写的代码很差,但是没有时间对所有的东西进行彻底的修改。我不允许直接在上面添加图片,所以我似乎在下面链接了它们

请找一个哑巴学校的学生,如果你有任何其他的建议,如果你愿意,请给出

谢谢你的编辑和格式化建议,正如你所看到的,我并不是棚里最聪明的工具

方法代码:

public static int AddNewOrder(string OrderAddress, DateTime OrderDate, int 
CustID, String OrderDeliveryDate, bool Delivery)
        {
                using (SqlConnection connection = new 
SqlConnection(_connectionString))
                {
                    connection.Open();
                    string sqlQuery = string.Format("INSERT INTO [Order]
(OrderAddress, OrderDate, CustID, OrderDeliveryDate, Delivery)VALUES('{0}', 
'{1}', '{2}', '{3}','{4}')", OrderAddress, OrderDate, CustID, 
OrderDeliveryDate, Delivery);
                    SqlCommand insertCommand = new 
SqlCommand(sqlQuery,connection);
                    int rowsAffected = insertCommand.ExecuteNonQuery();
                    connection.Close();
                    return rowsAffected;
                }
        }
数据输入表单中的代码:

 bool Delivery;
        int CustID;
       string Address;
        DateTime OrderDate;
        DateTime OrderDeliveryDate;

    private void buttonCreateOrder_Click(object sender, EventArgs e)
    {
        Delivery = checkBoxDelivery.Checked;

        CustID = int.Parse(textBoxCustID.Text);

        Address = textBoxOrderAddress.Text;
        OrderDate = DateTime.Now;
        OrderDeliveryDate = dtpOrderDeadlinDate.Value;

        int rowsAffected = DAL.OrderFirstFormDAL.AddNewOrder(Address, OrderDate, CustID, OrderDeliveryDate.ToString("yyyy-MM-dd HH:mm:ss"), Delivery);  

对于AddNewOrder函数,OrderDeliveryDate定义为字符串。但是,就在ButtonCreateOrder\u Click函数上方,它被定义为日期时间。OrderDeliveryDate参数肯定有问题,我相信您使用的是不存在的日期,例如月值大于12或日值大于30/31(基于月)

请尝试根本不使用图像。为代码、数据、错误消息等粘贴格式化文本。编辑器专门为此设置了标记格式。请帮助我们帮助一名哑巴学生。邮政编码,我们可以利用它来获得答案。你的标题说明了一切。您正在使用字符串在日期字段中写入值。字符串不是日期。不必粗鲁亲爱的@jacobi如果我使用日期时间选择器选择日期,格式会有问题吗?ATM我没有自定义格式集。我不知道datepicker是如何开发的,但是调试您的代码,您很可能会看到错误是由您使用OrderDeliveryDate变量的某个地方引起的,特别是当您在某个时刻进行转换时。我将AddNewOrder函数改为使用DateTime,并将OrderDeliveryDate变量输入DateTime中的方法,但错误仍然完全相同,尽管我可能误解了您建议的意图。在调试时,您能检查一下datetimepicker提供的日期及其格式吗?用于OrderDate和OrderDeliveryDate参数。他们总是一模一样吗?另外,请允许我询问您选择的日期是哪一天?对于OrderDate,我只是将其设置为DateTime的值。现在,在本例中,它是'14/02/2018 14:19:41',对于OrderDeliveryDate,我从dtp中选择2月15日,即'15/02/2018 14:19:34'