int blah = Convert.ToInt32(cmd.ExecuteScalar());
를 사용할 수 @Value cmd.ExecuteScalar를 사용할 수 :
SELECT가
또한 @Value이 나에게 객체는 null 예외를 제공합니다 :
int blah = (int)cmd.ExecuteScalar();
convert.toint32 및 (int) 같은 것은 아니지만 하나는 다른 래퍼입니까?
int blah = Convert.ToInt32(cmd.ExecuteScalar());
를 사용할 수 @Value cmd.ExecuteScalar를 사용할 수 :
SELECT가
또한 @Value이 나에게 객체는 null 예외를 제공합니다 :
int blah = (int)cmd.ExecuteScalar();
convert.toint32 및 (int) 같은 것은 아니지만 하나는 다른 래퍼입니까?
아니요, 할 수 없습니다. ExecuteScalar() 메서드는 결과 집합에 반환되는 단일 값으로 반환하도록 설계되었습니다. 기본적으로 첫 번째 행의 첫 번째 열에있는 값이 반환됩니다.
반환 값을 얻으려면 SQLCommand 개체에 매개 변수를 추가해야합니다. "@RETURN_VALUE"라는 이름을 사용하고 매개 변수 객체를 생성 할 때 Return이라는 매개 변수 방향을 지정하십시오. 그런 다음 ExecuteNonQuery() 메서드를 사용할 수 있습니다.
IMO의 스토어드 프로 시저 반환 값은 프로 시저의 상태를 나타내야합니다. 모든 데이터는 결과 세트 또는 출력 매개 변수를 통해 리턴되어야합니다.
다른 질문에 답하려면 (int)는 실제로 변환 (Convert.ToInt32)과 다른 캐스트입니다.
캐스트에서 사용자는 캐스팅되는 개체가 실제로 캐스팅 할 형식이므로 실제로 변환/구문 분석을 수행하지 않는다고 말하는 것입니다. int가 null 일 수 없기 때문에, 캐스팅하는 객체가 null이며 예외가 발생하면 캐스트가 유효하지 않습니다.
변환을 사용하면 실제 구문 분석과 논리가 수행되며 변환되는 개체가 null 인 상황을 처리합니다.
이 부분에 대한 자세한 정보가 있습니다. here.