单击按钮时出现SqlDateTime溢出错误

时间:2017-07-20 14:35:53

标签: c# sql stored-procedures buttonclick

当我执行应用程序时,应用程序运行...然后当我单击按钮时我收到错误

  

SqlDateTime溢出。必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间

我不知道如何解决这个问题,因为互联网上的大多数解决方案似乎都不适用于我。这是SQL方面的东西吗?

private void button1_Click(object sender, EventArgs e)
{
    SqlConnection sqlcn1 = new SqlConnection("My Connection String");
    sqlcn1.Open();

    //Stored Procedure
    SqlCommand sqlcmddel = new SqlCommand("My_Stored_Procedure", sqlcn1);
    sqlcmddel.CommandType = CommandType.StoredProcedure;
    sqlcmddel.ExecuteNonQuery();

    sqlcn1 = new SqlConnection("My Connection String");
    sqlcn1.Open();

    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        SqlCommand sqlcmdins = new SqlCommand("My_Stored_Procedure", sqlcn1);

        sqlcmdins.CommandType = CommandType.StoredProcedure;

        //Stored Procedure
        sqlcmdins.Parameters.Add("@sugnum", SqlDbType.Int).Value = Convert.ToInt64 (row.Cells[0].Value);
        sqlcmdins.Parameters.Add("@sugtype", SqlDbType.NVarChar, 50).Value = Convert.ToString(row.Cells[1].Value);
        sqlcmdins.Parameters.Add("@buyerid", SqlDbType.NVarChar, 50).Value = Convert.ToString (row.Cells[2].Value);
        sqlcmdins.Parameters.Add("@duedate", SqlDbType.DateTime).Value = Convert.ToDateTime (row.Cells[3].Value);
        sqlcmdins.Parameters.Add("@xrelqty", SqlDbType.Float).Value = Convert.ToDouble (row.Cells[4].Value);
        sqlcmdins.Parameters.Add("@purchasingfactor", SqlDbType.Float).Value = Convert.ToDouble (row.Cells[5].Value);
    }
}

2 个答案:

答案 0 :(得分:0)

在SQL端将数据类型更改为datetime2(对不起那个简短的答案,不能发表评论)

答案 1 :(得分:0)

尝试传递字符串值,参数将找出正确的数据类型示例qlcmdins.Parameters.Add("@duedate", row.Cells[3].Value.ToString())