C#,从MySQL数据库获取double值的问题

时间:2013-01-03 11:26:25

标签: c# mysql double datareader

我有一个带有“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”。

知道为什么会这样吗?还有什么可以解决它?

2 个答案:

答案 0 :(得分:3)

这是因为toString()使用当前的CultureInfo! 如果用逗号或点分隔双精度,则取决于文化。

CultureInfo

另请参阅this Stackoverflow问题!

如果您调试它,您应该看到,读者[“Price”]正在返回一个Object(type = Object {double})。这里的价值是否正确?我想是的,所以只需要跟随以显示双值:

string display = double.Parse(reader["Price"], CultureInfo.InvariantCulture).ToSring(CultureInfo.CurrentCulture);
System.Diagnostics.Debug.WriteLine(display);

答案 1 :(得分: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());
  }
}

价格变量应为双数据类型