簡體   English   中英

如何在c#中轉換sql類型的雙精度

[英]How to convert sql type double-precision in c#

我有一個數據庫訪問權限,其中一個字段是雙精度的。 通常,如果我在文本框1.71或1,71中設置,則數據庫中的字段應包含1.71。

但是如果我執行查詢,acces'field的值是171 !!

public const string QUERY = 
        @"UPDATE TBLART 
          SET TBLART.COST = @cost
          WHERE TBLART.CODE= '1'";

var param = new DynamicParameters();
var cost = totalCost.Replace(',', '.'); //totalCost is a textbox
param.Add("cost", Double.Parse(cost), DbType.Double);

gsmconn.Execute(QUERY, param);

我錯了什么? 謝謝。

double.Parse默認使用當前線程的文化。 懷疑你現在的文化是用“。” 作為分組分隔符。

兩種選擇:

  • 繼續使用您正在執行的Replace ,但在解析時指定CultureInfo.InvariantCulture
  • 刪除替換,並在解析原始值時使用當前線程的文化。 這依賴於適合用戶的文化,但在這種情況下可能是更好的解決方案。 (否則輸入“1,234.56”的人在預期“只是超過1234”的值時會得到一個解析錯誤。)

如果我在Windows窗體中正確記住,您可以將double屬性綁定到文本框,它將自動處理解析和轉換。 您不應該手動從字符串解析為double。

這個問題已經由.NET框架解決了。

另一個建議是,您的數據訪問代碼不應該進行任何解析。 這應該在更高層進行。 但最好把它留給框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM