2012-09-26 7 views
0

나는 SQL Server 2005 데이터베이스가있는 C# 응용 프로그램을 작성 중입니다. 데이터베이스에서 가져온 값을 십진수로 변환하는 최선의 방법은 무엇입니까?베이스에서 오는 값이 십진수인지 bigint인지 알 수 없습니까?C# 변환 bigint 10 진수

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

내 PLAYER 개체에서 PLAYER_ID는 10 진수 형식입니다.

두 개의 다른 데이터베이스를 사용하므로 기본에서 오는 값은 bigint 또는 decimal 일 수 있습니다. 이것이 십진수 인 경우 thete는 문제가 없지만 bigint 인 경우 오류가 발생합니다.

+0

'GetDecimal'은 캐스트하지 않지만'GetFieldValue <> '는 캐스트합니다. 'dataReader.GetFieldValue (0)'이 작동합니까? – arx

답변

2

GetFieldType 메서드를 사용하여 개체의 데이터 형식을 확인할 수 있어야합니다.

+0

에릭 제이 (Eric J.)는 반환 된 모든 행에 대해 GetFieldType을 호출하지 말아야한다는 답변을 제안합니다. 읽기 전에 플래그를 설정하십시오. –

0

사용 Decimal.TryParse : 그것은 null이 아니라면

decimal tempID; 

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

그것은 소수에 값을 변환해야합니다. null의 진수는 0

1

을 남아 있다면 당신은 유형

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getfieldtype.aspx

Type type = dataReader.GetFieldType(0); 

그런 다음 데이터를 읽고 적절한 리더 방법을 사용할 수를 결정하기 위해 GetFieldType를 사용할 수 있습니다.

모든 행에 대해 GetFieldType을 호출하지 않는 것이 좋습니다. 행을 읽기 시작하고이 특정 쿼리가 반환 한 유형을 나타내는 플래그를 설정하기 전에이 함수를 호출하십시오.