Почему я получаю арифметическую ошибку переполнения при преобразовании чисел в числовой тип данных в ADO.NET? - PullRequest
1 голос
/ 16 декабря 2009

Оригинальный вопрос:

Почему я получаю ошибку арифметического переполнения при преобразовании числового значения в числовой тип данных в коде ADO.NET с использованием типа данных Money, если сумма превышает 999 999,99 $? Как говорится в вопросе ... У меня есть немного кода ADO.net на уровне доступа к данным, который взаимодействует с базой данных Sql Server 2008. В таблице есть столбец «Сумма» с типом данных «Деньги». Код работает нормально при вставке записи с суммой <1 000 000, но выдает эту ошибку, когда сумма> = 1 000 000:

«Ошибка арифметического переполнения при преобразовании числового значения в числовой тип данных»

Я могу вручную запустить t-sql для базы данных, обновив сумму до значения, превышающего 1 000 000 долларов США, чтобы база данных могла, кроме суммы штрафа ... что это за следующая SqlCommand, которая вызывает ошибку?

        MyCommand.Parameters.Add(New SqlParameter("@Amount", SqlDbType.Money))
        If IsNothing(Amount) Then
            MyCommand.Parameters("@Amount").Value = Convert.DBNull
        Else
            MyCommand.Parameters("@Amount").Value = Amount
        End If

1 Ответ

1 голос
/ 16 декабря 2009

Если при вызове хранимой процедуры со значением возникает ошибка, но при прямом обновлении таблицы с тем же значением ошибка не возникает, это вызывает подозрение на тип данных параметра @Amount. Убедитесь, что он также определен как Деньги.

...