은 동일 함 DataReader가 [I]는 DataReader.GetValue DataReader.GetString (I) 대 (I) 대
dataReader.GetValue(i)
논리적으로 동일
dataReader[i]
인가? 그들은 다른가요? 하나가 다른 것보다 적절할 수있는 상황이 있습니까?
는 documented differently 있습니다
- 지정된 인덱스
- 반환 지정된 필드의 값에있는 열을 가져옵니다. 내가 그들을 사용할 때
은 그러나 둘은 필드의 값을 반환합니다. "기둥을 가져 오는 것"은 무엇을 의미합니까? "밭의 가치를 되 돌린다"는 것은 무엇을 의미합니까?
보너스 채팅 : 내가 전화
:
reader[i];
reader.GetValue(i);
reader.GetString(i);
나는 String
'GetValue'가'바이트 '를 반환하지만 끔찍한 경우가 있습니다.하지만 GetInt32는 바이트를 Int32로 캐스트 할 수 없습니다 –
(특히 분해 된 코드는 읽기가 어렵 기 때문에) 말하기 어렵지만 열의 값이 이미 원하는 유형이어야합니다. 그렇지 않으면 InvalidCastException (자체가 약간 잘못된 것입니다)이 발생합니다. 나는 대답을 편집 할 것이다. –
실제로 GetInt32 (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getint32.aspx)에 대한 설명서는 "변환이 수행되지 않으므로 검색된 데이터는 이미 32 비트 부호있는 정수 여야합니다. " 다른 GetXXX 메서드도 비슷하게 문서화됩니다. –