5

SQL Server テーブルに 10 進値を挿入できません。

私がやろうとしていることは、これらのコード行を通して自明です:

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

4 に答える 4

9

私の疑いは、あなたの小数フィールドが SQL で間違って設定されているということです。必要なのは、decimal(18,2)小数点以下 2 桁を許可するフィールドです。私の疑いは、フィールドをdecimal(18,0)(デフォルト)として宣言したことです。これは、小数点以下の桁数を許可しません。

SQL Server Profiler を使用して、DB に送信される INSERT の内容を確認できれば、このような問題がコードによるものなのか、SQL サーバー上の何かによるものなのかを簡単に判断できます。

于 2011-05-02T14:40:58.227 に答える
4

SqlParameter.Scaleを 2に設定してみてください。

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

ブルーノが提案するプロパティも調べてくださいPrecision(デフォルトは0です)。

于 2011-05-02T14:31:15.427 に答える
1

Scale と Precision を設定する必要があります。

それが問題だと思います。

于 2011-05-02T14:32:06.113 に答える
1

パラメータは問題ないようです。データベース列のデータ型を確認します

于 2011-05-02T14:43:58.803 に答える