[英]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.