2013-12-09 83 views
0

在我的開發PC上,我使用美國的區域設置,所以當我從c#/ asp.net發送到SQL Server存儲過程200.00時,它將其作爲200, ,但在生產服務器上,與其他區域設置一樣,它需要它爲20000,小數點爲「,」。 好吧,我知道我可以取代它,但我需要永久的解決方案,所以我的問題是: 有什麼辦法可以確保我發送了十進制數,而不依賴於區域設置嗎?如何確定您發送了正確的十進制值?

回答

2

這聽起來像你的問題不是與SQL Server,但與解析小數。你的問題似乎有點含糊,因爲「實際十進制數」的字符串格式根據語言環境而不同。如果您想以不變的語言環境將字符串轉換爲小數,則可以在解析它們時指定格式提供程序。

例如:

decimal.Parse("20.000", 
    System.Globalization.CultureInfo.InvariantCulture.NumberFormat); 
1

我猜你正在將值作爲字符串發送,要麼作爲過程的VARCHAR參數,要麼通過連接SQL(更可能)連接SQL。

在任何一種情況下,解決方案都是相同的 - 將數字值作爲數字類型而不是字符串發送,和/或使用參數化查詢而不是連接字符串來生成SQL語句。

+0

我從文件中讀取200.00,將其作爲參數(SQL參數類型=浮子,隱式轉換),並且我仍然提到的問題。 –