C# MySQL 十进制数与 .或

本文关键字:十进制数 MySQL | 更新日期: 2023-09-27 18:36:34

我在mysql数据库中有一个表FEES,其中一列是AMMOUNT,类型为十进制(10,2)。我有一个 C# (winforms) 应用程序,其中包含一个用于在数据库中插入值的文本框。

string initialquery = "INSERT INTO EXPENSES (ID, E_DATE, AMMOUNT, PERSON, COMMENTS, T_ID) " +
                            "VALUES ('" + id + "', '" + date.ToString("yyyy:MM:dd") + "', '" + ammount + "', '" + person + "', '" + comments + "', '" + tid + "')";
        //yyyy:MM:dd hh:mm:ss
        myMySqlConnection.Open();
        MySqlCommand command1 = new MySqlCommand(initialquery, myMySqlConnection);
        command1.ExecuteNonQuery();
        if (lang == 2)
            MessageBox.Show("ΤΑ ΔΕΔΟΜΕΝΑ ΑΠΟΘΗΚΕΥΤΗΚΑΝ");
        else if (lang == 1)
            MessageBox.Show("DATA SAVED");
        myMySqlConnection.Close();

问题与区域环境有关。如果我将格式设置为希腊语。十进制符号是","。当我尝试插入带有","的十进制值时,它不接受它(存储为 405 而不是 40,5)。如果我将十进制符号设置为"."并且我在文本框中有 40.5 正确存储。如果我将区域设置设置为 ENGLISH,并将十进制值设置为 ","再次不起作用。似乎只有当十进制符号为"."我不太明白这一点。如何使其接受","作为小数运算符?

此致敬意乔治·乔治

C# MySQL 十进制数与 .或

我认为您设置了开发计算机的区域设置,但SQL Server仍处于en-us模式,因此也更改了SQL服务器的区域设置。

希望它可以根据需要接受小数。

从十进制转换为字符串时可以使用CultureInfo.InvariantCulture

请参阅 msdn

引用:

decimal value = -16325.62m;
// Display value using the invariant culture.
Console.WriteLine(value.ToString(CultureInfo.InvariantCulture));
// Display value using the en-GB culture.
Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("en-GB")));
// Display value using the de-DE culture.
Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("de-DE")));
// This example displays the following output to the console:
//       -16325.62
//       -16325.62
//       -16325,62

请注意,如果用户在其输入中使用逗号,则可以使用计算机区域性从字符串转换为十进制,并在生成查询时使用CultureInfo.InvariantCulture转换回带有"."(句点)。

为了解决这个问题,我使用了不太正确的代码,但这是我所做的。 string ammount = (textBox2.Text).Replace (",",".");我将值作为字符串插入。将值传递给 sql 语句时:

string initialquery = "INSERT INTO EXPENSES (ID, E_DATE, AMMOUNT, PERSON, COMMENTS, T_ID) " +
                                "VALUES ('" + id + "', '" + date.ToString("yyyy:MM:dd") + "', '" + ammount + "', '" + person + "', '" + comments + "', '" + tid + "')";

及其工作