gpt4 book ai didi

c# - 将十进制值保存到数字字段 SQL

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:38 25 4
gpt4 key购买 nike

我的代码中有以下内容:

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)

最佳答案

您需要在存储过程中设置小数和数字声明的精度和小数位数。如果你不这样做,当你将 0.5 分配给你的小数时,它已经被转换为 1,你的数字也将是 1。参见 here

所以你的存储过程应该是这样的:

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

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

关于c# - 将十进制值保存到数字字段 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33788641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com