동적으로 SQL 쿼리를 생성하고 IDbCommand.ExecuteScalar()를 통해 실행하는 C# 코드가 있습니다. 이것은 잘 작동합니다. DB에서 내 쿼리와 정확히 일치하는 결과가 하나 있는데 그 결과가 항상 반환됩니다.IDbCommand.ExecuteScalar()가 성공하면 IDbCommand.ExecuteReader()가 실패 할 수있는 이유는 무엇입니까?
하지만 최근에는 DB에서 여러 일치를 지원하는 리팩터링의 첫 번째 단계로 ExecuteReader()에 대한 호출을 ExecuteScalar()로 대체했습니다. 설정 및 DB 액세스의 다른 모든 항목은 동일합니다. 그러나 반환 된 IDataReader에는 데이터가 포함되어 있지 않으며 데이터를 가져올 때마다 InvalidOperationExceptions가 throw됩니다.
데이터가 아직 남아 있습니다. ExecuteScalar()로 다시 전환하면 모든 것이 올바르게 작동합니다. 이것이 어떻게 가능한지?
Read() 대신 NextResult()를 사용하고있었습니다. 오케이. –