Ошибка переполнения SqlDateTime при нажатии кнопки

Когда я запускаю приложение, приложение запускается... затем, когда я нажимаю кнопку, я получаю сообщение об ошибке

SqlDateTime переполнение. Должно быть между 01.01.1753 12:00:00 и 31.12.9999 23:59:59

Я не уверен, как это исправить, так как большинство решений в Интернете, кажется, не работают для меня. Это что-то на стороне 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 ответа

Измените тип данных на datetime2 на стороне SQL (извините за этот короткий ответ, не могу комментировать)

Попробуйте вместо этого передать строковое значение, параметры определят правильный пример типа данных qlcmdins.Parameters.Add("@duedate", row.Cells[3].Value.ToString())

Другие вопросы по тегам