2013-07-29 137 views
1

我試圖Replace符號「,」與「。」。在UPDATE參數,但我無法解決它。該參數更新SQL DB中的textBoxes的數值類型。SqlCommand參數替換

我以爲它可以做到這樣的事情,但parameter不包含definiton Replace。有沒有辦法做到這一點?

prikaz.Parameters.AddWithValue("@poc_kli", poc_kli.Text).Replace(',', '.'); 
+1

你必須在文本框上做它prikaz.Parameters.AddWithValue(「@ poc_kli」,poc_kli.Text.Replace(',','。')); – Zaki

回答

4

先解析值;然後在參數中使用鍵入數據。例如:

decimal val = decimal.Parse(poc_kli.Text); 
prikaz.Parameters.AddWithValue("poc_kli", val); 

,而不是「替換」,你應該使用合適的CultureInfo解析值時(如果它不同於默認區域性)。爲了簡單起見,我假設你不需要實際上需要指定一種文化,但這只是一個嘗試使SQL Server感到開心。但是,例如:

CultureInfo culture = CultureInfo.InvariantCulture; 
// ^^^ or GetCulture, CurrentCulture, etc 
decimal val = decimal.Parse(poc_kli.Text, culture); 

更妙的是完全數據訪問代碼從UI代碼分開:

decimal val = decimal.Parse(poc_kli.Text); 
SomeDatabaseMethod(val, ...other args); 

... 

public void SomeDatabaseMethod(decimal pocKli, ... other parameters ...) 
{ 
    ... 
    prikaz.Parameters.AddWithValue("poc_kli", pocKli); 
    ... 
} 

的事實,你有一行代碼觸及兩個UI和數據庫(它們完全不相關,或者應該是)應該關心你。

2

您正在替換代碼中的錯誤位置。試試:

prikaz.Parameters.AddWithValue("@poc_kli", poc_kli.Text.Replace(',', '.')); 
+0

我敢打賭,''vs'''是一種嘗試將其格式化以使SQL Server滿意於文化差異;因此,我幾乎肯定完全是錯誤的做法 –

+0

我同意;我已經提出你的評論,因爲它比我的一般教學更有用(它只涉及當前的技術問題)。 –