2011-05-02 40 views
5

我無法將十進制值插入到Sql Server表中。無法通過c#代碼插入到sql服務器表的十進制

我想要做的是通過這些代碼行自我解釋:

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

請幫我

感謝預期

+0

爲什麼不簡單地存儲fileSizeInBytes不感興趣? – 2011-05-02 14:33:54

+0

錯誤是在存儲過程中,我指定的參數類型只是十進制,而應該是十進制(18,2)。任何方式現在它像一個魅力後,我糾正了錯誤 – 2011-05-02 15:17:04

回答

8

我懷疑你的十進制字段在SQL中設置錯誤。你想要的是一個decimal(18,2)字段,它允許2位小數。我的懷疑是你宣佈該字段爲decimal(18,0)(默認值),它不允許有任何小數位。

如果您可以使用SQL Server Profiler來驗證INSERT內容到您的數據庫,那麼您可以更容易地確定這樣的問題是否由於您的代碼或SQL服務器上的某個問題。

+0

這是我在使用存儲過程插入數據時的錯誤,Create procedure [dbo]。[NewComponentInsertion](@componentName varchar(max),@fileSize decimal,@filePath varchar(max),@price decimal,@description [組件]([組件名稱],[大小(以MB爲單位)],[總下載量],[文件路徑],[價格(中的內容)),@totalDownloads int,@disableFlag int) SEK)],Description,DisableFlag)值(@componentName,@fileSize,@totalDownloads,@filePath,@price,@description,@disableFlag)我插入十進制,沒有說明明文 – 2011-05-02 15:14:20

+0

它應該是十進制(18,2) ,所以改變的存儲過程是:Create procedure [dbo]。[NewComponentInsertion](@componentName varchar(max),@fileSize decimal(18,2),@filePath varchar(max),@price decimal(18,2),插入[dbo]。[組件]([組件名稱],[大小(以MB爲單位)],[總數(最大),@totalDownloads int,@disableFlag int) (@componentName,@fileSize,@totalDownloads,@filePath,@price,@description,@disableFlag) – 2011-05-02 15:15:23

+0

我糾正了它的錯誤後,像一個魅力。 – 2011-05-02 15:18:53

3

嘗試設置SqlParameter.Scale爲2

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

也按照Bruno所建議的(默認爲0)查看Precision屬性。

+0

指出,這是錯誤。感謝您的建議,但。 – 2011-05-02 15:35:23

1

您應該設置比例和精度。

我認爲這是問題所在。

1

你的參數看起來不錯。我會檢查數據庫列的數據類型

+0

你是對的。這是我在使用存儲過程插入數據時的錯誤,Create procedure [dbo]。[NewComponentInsertion](@componentName varchar(max),@fileSize decimal,@filePath varchar(max),@price decimal,@description varchar(max),@totalDownloads int,@disableFlag int)as insert into [dbo]。[組件]([組件名稱],[大小(以MB爲單位)],[總下載量],[FilePath],[價格(以瑞典克朗)],描述,DisableFlag)值(@componentName,@fileSize,@totalDownloads,@filePath ,@price,@description,@disableFlag)我插入小數時沒有說明 – 2011-05-02 15:13:34

相關問題