在.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的小數位元,只要改掉資料庫中對應的欄位長度就行了,而程式不用做任何改更。而如果我們在程式中也設定了小數位 數,那麼在改了資料庫同時還得修改程式。