C#中如何為參數SqlDbType.Decimal指定精度與小數位元

來源:互聯網
上載者:User

在.net中操作資料庫的時候,我們更多的是推薦使用參數化來傳值,但這其中就會產生一些疑惑,比如使用Decimal時如何保持與資料庫中一樣的精度與小數位元呢?

利用參數的Precision與Scale的屬性即可,樣本如下:

///<summary >
///更新一條資料
///</summary >
public DictionaryEntry Update_DictionaryEntry(SDERP.Model.storehouse.Storage_GoodsUnitExchange model)
{
……
SqlParameter[] parameters = {
new SqlParameter("@ID", SqlDbType.Int,4),
new SqlParameter("@GID", SqlDbType.VarChar,50),
new SqlParameter("@ChangeRate", SqlDbType.Decimal,13)
};
parameters[0].Value = model.ID;
parameters[1].Value = model.GID;
parameters[2].Value = model.ChangeRate;
parameters[2].Precision = 28;
parameters[2].Scale = 10;

return new DictionaryEntry(strSql, parameters);
}

這樣,我們就指定了"@ChangeRate"參數的精度為28,最大小數位元為10。

注意:其實在.net中,如果沒有特殊的情況,我們並不需要為參數設定精度與小數位元,在預設的情況下,參數會如實的傳遞使用者的值,並不會像資料庫一樣如果不設定小數位元,那麼小數位元就是0。而且如果在程式中設定了精度與小數位元,那麼在後期的程式的修改中也會帶來很大的工作量,試想一下,如果我們在此 處不設定,那麼以後要改變decimal的小數位元,只要改掉資料庫中對應的欄位長度就行了,而程式不用做任何改更。而如果我們在程式中也設定了小數位 數,那麼在改了資料庫同時還得修改程式。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.