zoukankan      html  css  js  c++  java
  • C#中如何为参数SqlDbType.Decimal指定精度与小数位数

    在.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的小数位数,只要改掉数据库中对应的字段长度就行了,而程序不用做任何改更。而如果我们在程序中也设置了小数位 数,那么在改了数据库同时还得修改程序。

  • 相关阅读:
    IDEA 工具 破解码
    postman 使用 及断言
    MonkeyTest 命名
    Jmeter 测试单元的封装与复用
    开发性能测试工具——自己动手实现迭代功能
    jemter安装mysql数据驱动JDBC
    全链路性能测试知识点整理
    Java接口全链路优化:如何降低接口RT时长(转)
    测试自动化之Mock服务思路探讨
    算法分析与设计(一)时间与空间复杂度
  • 原文地址:https://www.cnblogs.com/hakuci/p/2529487.html
Copyright © 2011-2022 走看看