Невозможно вставить десятичную таблицу сервера SQL через код C # - PullRequest
5 голосов
/ 02 мая 2011

Я не могу вставить десятичные значения в таблицу Sql Server.

То, что я пытаюсь сделать, говорит само за себя через эти строки кода:

long fileSizeInBytes = ComponentUploadControl.FileContent.Length;
Decimal fileSizeInMB = Convert.ToDecimal(fileSizeInBytes) / (1024.0m * 1024.0m);
Decimal fileSizeInMBRounded = Math.Round(fileSizeInMB, 2);
cmd.Parameters.Add("@fileSize", SqlDbType.Decimal).Value = fileSizeInMBRounded;

Значението, что вставляется в базу данных, удаляется из десятичных разрядов.Чтобы быть более точным, если fileSizeInMBRounded равен 11,73, значение, которое вставляется в базу данных, равно 11,00

Пожалуйста, помогите мне

Спасибо в ожидании

Ответы [ 4 ]

9 голосов
/ 02 мая 2011

Я подозреваю, что ваше десятичное поле неправильно установлено в SQL. То, что вы хотите, это поле decimal(18,2), которое учитывает 2 знака после запятой. Я подозреваю, что вы объявили поле как decimal(18,0) (по умолчанию), что не допускает никаких десятичных разрядов.

Если вы можете использовать SQL Server Profiler для проверки содержимого INSERT, отправляемого в вашу БД, вам будет легче определить, связана ли такая проблема с вашим кодом или чем-то на SQL-сервере.

4 голосов
/ 02 мая 2011

Попробуйте установить SqlParameter.Scale на 2.

SqlParameter parameter = new SqlParameter("@fileSize", SqlDbType.Decimal);
parameter.Scale = 2;
parameter.Value = fileSizeInMBRounded;
cmd.Parameters.Add(parameter);

Также посмотрите на Precision свойство, как предложено Бруно (по умолчанию 0).

1 голос
/ 02 мая 2011

Ваш параметр выглядит хорошо.Я бы проверил тип данных столбца базы данных

1 голос
/ 02 мая 2011

Вы должны установить Scale и Precision.

Я думаю, что это проблема.

...