2013-06-18 44 views
0

我想解析來自數據庫的重試值爲double,longinteger,但它會引發FormatException。我需要你的幫助。輸入字符串格式不正確(格式異常未處理)

在此代碼中,我試圖從數據庫中檢索小時數,並將它們相加以計算輸入數據庫的總小時數。

String hrs; 
Double resultHrs=0; 

while (oleDbDataReader1.Read()) 
{ 
    hrs = oleDbDataReader1["Hours"].ToString(); 
    double HRS = double.Parse(oleDbDataReader1["Hours"].ToString()); 
    resultHrs = resultHrs + HRS; 
}// end while 

回答

2

不要做擺在首位的字符串轉換:

double hours = (double) oleDbDataReader1["Hours"]; 

除非你的價值實際上在數據庫中的字符串(在這種情況下,你應該解決這個問題),我們沒有理由將其轉換爲的一個字符串。 (如果它沒有被映射到double一個類型,你應該改變你丟給,當然)。

編輯:如果它在數據庫非數字,那麼你可能需要使用double.Parse - 但你可能想要指定文化。例如,假設它們都是形式「10.2」,而不是「10,2」(如一些文化會用),你會想是這樣的:

double hours = double.Parse((string) oleDbDataReader1["Hours"], 
          CultureInfo.InvariantCulture); 
+0

以及訪問數據庫中的簡單文本.... –

+0

@AbeerIslam:如果它始終用於存儲數字,爲什麼它是文本? –

+0

無論如何,我必須投入它,而輸入數據庫的價值是我的理由,但我已經改變了它 –

1

我用:

HRS = oledbDataReader1.GetDouble(iColumn); 

其中iColumn是查詢中的列索引