如何将十进制数从c#保存到sql

如何将十进制数从c#保存到sql,c#,sql,sql-server,decimal,C#,Sql,Sql Server,Decimal,当我试图将十进制数从c#保存到sql数据库时,遇到了一个问题。首先,我有一个转换为十进制的字符串,当我试图将该十进制保存到sql数据库时,出现了一些错误。例如,如果我试图保存3.24,在数据库中显示为324.00,这是代码的一部分,请帮助。。。我已经尝试将类型从decimal改为numeric,而不是convert.ToDecima decimal.Parse decimal cijena_uzine = Convert.ToDecimal(textBox1.Text, Cult

当我试图将十进制数从c#保存到sql数据库时,遇到了一个问题。首先,我有一个转换为十进制的字符串,当我试图将该十进制保存到sql数据库时,出现了一些错误。例如,如果我试图保存3.24,在数据库中显示为324.00,这是代码的一部分,请帮助。。。我已经尝试将类型从decimal改为numeric,而不是convert.ToDecima decimal.Parse

        decimal cijena_uzine = Convert.ToDecimal(textBox1.Text, CultureInfo.InvariantCulture.NumberFormat);

        try
        {
            spremi_cijenu_obroka.Open();
            cmd = new SqlCommand("Update Vrsta_Obroka set cijena="+ cijena_uzine + " where Šifra_Obroka=1 ;", spremi_cijenu_obroka);

我只是猜测,但您可能输入的数字为
3,24
,小数点分隔符为逗号(欧洲大多数国家都是这样做的)

当您使用
CultureInfo.InvariantCulture.NumberFormat
时,它将转换为
324

将您的代码更改为以下以使用您的区域性:

decimal cijena_uzine = Convert.ToDecimal(textBox1.Text, System.Globalization.CultureInfo.CurrentCulture);

我将变量保留为字符串,它以某种方式工作

string cijena_uzine = textBox1.Text;             
        try
        {
            spremi_cijenu_obroka.Open();
            cmd = new SqlCommand("Update Vrsta_Obroka set cijena=" +cijena_uzine + " where Šifra_Obroka=1 ;", spremi_cijenu_obroka);

您的
文本框1
中的文本是什么?请将您的代码重写为一个文本。硬编码字符串,在某个地方打印出
cijena_uzine
的值,这样你就可以看到十进制是什么字符串,然后将其写入数据库。需要更多信息,但我怀疑你的转换并没有给出你想的数字。脱离主题,而是这样编码-你正在为SQL注入攻击打开自己的大门!使用参数化查询。可能您的ui设置正确,但使用逗号作为小数点,这在翻译过程中会丢失。您的输入字段看起来像10,56还是10.56?很好。一旦您提到它,我就尝试了
decimal.Parse(“3,00”)
,它实际上返回了300(在我的文化中)。(虽然这会导致解析错误,因为逗号不在正确的位置)它不起作用…仍然是一样的,我在输入数字之前尝试了3,24和3.24。结果是一样的:(那么调试时,
cijena_uzine
的值是多少?@KirkWoll逗号是千位分隔符,这就是为什么它会这样返回。@Szymon,是的,我知道。:)但是虽然
1000
是合法的,
1,00
看起来人们不知道逗号(“千位”)分隔符是什么意思