2

我在选择语句中使用我的双精度:

代码:

    SqlCommand command = new SqlCommand("SELECT min(Score) FROM "+ table +" WHERE [" + sportEvent + "] < (@result);", connect);
        command.Parameters.AddWithValue("@result", result);

如果双精度结果是整数,但如果结果是逗号数字(例如 11,34)则一切正常 -> 应该是 11.34 才能工作(点而不是逗号)

如何将双 11,34 更改为 11.34 ?

4

4 回答 4

3

您的代码似乎将字符串参数设置为数字类型 DB 值的约束,让数据库进行转换。这不是一个好主意,因为它会从您的程序中夺走控制权:如果 DBA 决定重新配置您的后端数据库以“理解”逗号而不是点,您的程序将停止工作!

目前,您double的格式是特定于语言环境的。您需要使用特定于语言环境的格式提供程序对其进行解析,然后将从解析器返回的值设置为 SQL 查询的参数。假设当前文化是使用逗号作为小数分隔符的文化,您可以这样做:

command.Parameters.AddWithValue(
    "@result"
,   double.Parse(s, CultureInfo.CurrentCulture)
);
于 2013-05-30T12:38:37.617 回答
3

你可以用这个

result.ToString(CultureInfo.InvariantCulture)
于 2013-05-30T12:37:34.657 回答
0

如果结果是 Double 然后:

command.Parameters.Add("@result", SqlDbType.Float).Value = result
于 2013-05-30T12:38:38.837 回答
0

您可以尝试将变量更改为字符串:

result.ToString().Replace(',','.');

这将用点替换逗号。

于 2013-05-30T12:37:16.663 回答