我有一个带有“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”。
知道为什么会这样吗?还有什么可以解决它?
答案 0 :(得分:3)
这是因为toString()使用当前的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());
}
}
价格变量应为双数据类型