繁体   English   中英

将十进制值保存到数字字段SQL中

[英]Save a decimal value into a numeric field SQL

我的代码中包含以下内容:

protected void SaveValue_Click(object sender, EventArgs e)
{
        ArticleDBHQ article = new ArticleDBHQ();
        article.Weight = Convert.ToDecimal(tbWeight.Text);
}

在我的ArticleDBHQ类中,成员变量Weight如下:

public class ArticleDBHQ : Entity
{
    private decimal? weight;

    public decimal? Weight
    {
        get { return weight; }
        set { weight = value; }
    }
}

在我的数据访问层中,当我要将其保存到数据库时,我使用SqlCommand调用存储过程,如下所示:

SqlCommand cmd = new SqlCommand("MODIFY_ARTICLE");

我传递值:

cmd.Parameters.Add("@weight", SqlDbType.Decimal).Value = (!Entity.Weight.HasValue ? SqlDecimal.Null : Entity.Weight.Value);

在我的存储过程中,权Weight定义如下:

    @weight DECIMAL, 
     ...
    p301_weight = @weight

在表p301 ,列weight定义为numeric

我无法更改表格的类型,如何将decimal值保存为numeric 据我了解(并证明了这一点),它只保存integer部分,因此而不是保存0,5就是保存1 (加号是四舍五入的)。

也许是convert 但是如何以及在哪里。

编辑:p301上的字段weight声明为numeric(9, 3) p301 numeric(9, 3)

您需要在存储过程的十进制和数字声明中设置精度和小数位数。 如果您没有给小数点分配0.5,则它将已经转换为1,并且您的数字也将为1。 这里

因此,您的存储过程应如下所示:

 @weight DECIMAL(9,3), 
 ...
 p301_weight = @weight

您使用的精度和小数位应与表中列上的设置相匹配。 如果表只能处理整数,则必须执行@Shawn C建议的操作,然后通过乘除除将其转换为整数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM