0

我在 mysql 数据库中有一个表 EXPENSES,其中一列是 AMMOUNT,类型为 decimal(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 存储正确。如果我将区域设置设置为英语并将十进制值设置为“,”,则再次无法正常工作。似乎只有当十进制符号是“。”时才接受十进制数字。我不太明白这一点。我怎样才能让它接受“,”作为小数运算符?

最好的问候乔治乔治

4

3 回答 3

0

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

希望它可以接受你想要的小数。

于 2012-06-09T09:07:35.117 回答
0

您可以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“。”转换回字符串。(时期)。

高温高压

于 2012-06-09T09:14:08.073 回答
-1

为了解决这个问题,我使用了一个不太正确的代码,但这就是我所做的。 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 + "')";

及其工作

于 2012-06-10T07:17:02.420 回答