2012-09-26 119 views
0

我正在使用sql server 2005數據庫的c#應用程序。 將從數據庫轉換爲數據讀取器的值轉換爲十進制的最佳方法是什麼?不知道來自基數的值是小數還是bigint?c#轉換bigint十進制

 if (dataReader.IsDBNull(0) == false) { 
      PLAYER.PLAYER_ID = dataReader.GetDecimal(0); 
     } 

在我的Player對象,PLAYER_ID是小數類型。

我使用兩個不同的數據庫,因此,來自基地的值可以是bigint或decimal。如果這是十進制的,那麼它沒有問題,但如果它是一個bigint,我會得到一個錯誤。

+0

'GetDecimal'不會轉換,而是'GetFieldValue <>'。 'dataReader.GetFieldValue (0)'有效嗎? – arx

回答

2

您應該可以使用GetFieldType方法來確定對象的數據類型。

+0

Eric J.在他的回答中提出了一個很好的建議,即應該避免爲所有返回的行調用GetFieldType;在閱讀之前只需設置一個標誌。 –

0

使用Decimal.TryParse

decimal tempID; 

Decimal.TryParse(dataReader[0], out tempID); 
PLAYER.PLAYER_ID = tempID; 

應該值轉換爲十進制,除非它是空。如果它是空的小數將保持0