1

我有一个带有“ Products”表的 MySQL 数据库。“”中的一列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!如果双精度由逗号或点分隔,则取决于文化。

文化资讯

另请参阅Stackoverflow 问题!

如果你调试它,你应该会看到,那个 reader["Price"] 正在返回一个 Object (type=Object{double})。这里的值正确吗?我猜是这样,所以只需执行以下操作即可显示双值:

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());
  }
}

价格变量应该是双数据类型

于 2013-01-03T11:32:39.680 回答