1

テーブル""を持つMySQLデータベースがありますProducts。「」の列は「Products」と呼ばれPrice、データ型は「double」です。

その列から値を取得する必要があるため、リーダーなどを作成します。

MySQLCommand cmd = new MySQLCommand("SELECT Price FROM Products", connection);
MySQLDataReader reader = cmd.ExecuteReaderEx();

if (reader.HasRows == true)
{
  while (reader.Read() == true)
  {
    price = reader["Price"]).ToString();
  }
}

問題は、価格が期待値に設定されていないことです。データベースの値が「299.95」の場合、価格は「29995.0」に設定されます。

なぜこれが起こっているのか考えていますか?そしてそれを修正するために何ができるでしょうか?

4

2 に答える 2

3

これは、toString() が現在の CultureInfo を使用するためです! double がコンマまたはドットで区切られているかどうかは、カルチャによって異なります。

文化情報

このStackoverflow の質問も参照してください。

デバッグすると、reader["Price"] がオブジェクト (type=Object{double}) を返していることがわかります。ここの値は正しいですか?そうだと思うので、次のようにして double-value を表示します。

string display = double.Parse(reader["Price"], CultureInfo.InvariantCulture).ToSring(CultureInfo.CurrentCulture);
System.Diagnostics.Debug.WriteLine(display);
于 2013-01-03T11:34:19.277 に答える
0

試す

MySQLCommand cmd = new MySQLCommand("SELECT Price FROM Products", connection);
MySQLDataReader reader = cmd.ExecuteReaderEx();

if (reader.HasRows)
{
  while (reader.Read())
  {
    price = double.Parse(reader["Price"]).ToString());
  }
}

価格変数は double データ型である必要があります

于 2013-01-03T11:32:39.680 に答える