2013-05-30 35 views
2

用我用我的雙select語句:轉換雙用逗號的變量與點在SQL語句

代碼:

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?

+0

什麼是變量的數據類型'result'添加作爲參數值? – Steve

+0

結果的數據類型是雙倍 – user2323240

+1

「雙」本身沒有「。」或「,」 - 它只是一個數字。如果'result'是一個'double'變量,那麼你的問題就是填充該變量,大概是用'double.TryParse'或'Convert.ToDouble'。你能告訴我們*代碼嗎? – Rawling

回答

3

看來,你的代碼將一個字符串參數作爲數值類型的DB值的約束,讓數據庫做轉換。這不是一個好主意,因爲它將控制權從程序中解放出來:如果DBA決定重新配置後端數據庫以「理解」逗號而不是點,則程序將停止工作!

當前,您的double採用特定於語言環境的格式。您需要使用特定於語言環境的格式提供程序對其進行解析,然後將解析器中返回的值設置爲SQL查詢的參數。假設目前的文化是一個正在使用逗號作爲小數點分隔符,你可以這樣做:

command.Parameters.AddWithValue(
    "@result" 
, double.Parse(s, CultureInfo.CurrentCulture) 
); 
0

你可以嘗試改變變量轉換爲字符串:

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

這以點代替逗號。

2

您可以使用此

result.ToString(CultureInfo.InvariantCulture) 
0

如果結果是雙則:

command.Parameters.Add("@result", SqlDbType.Float).Value = result