0
DataTable 테이블이 있습니다. 그 테이블에서 나는 typeof (십진수) 인 컬럼으로부터 값을 읽는다. 이 값을 십진수로 변환하려고합니까? dec. value가 null이면 예외가 발생합니다. 나는이 방법을 시도 : SqlDataReader 개체를 사용하여 SQL 데이터 테이블에서 읽을 때 DataTable에서 nullable 십진수를 캐스팅합니다.
decimal? dec= row["myRow"] == null ? null : (decimal?)row["myRow"];
//this thorws "Specified cast is not valid." Exception
decimal? dec= myRdr["myValue"] == DBNull.Value ? null : (decimal?)myRdr["myValue"];
//this does NOT throw an Exception??
내가 두 번째 해결책을 시도하고 그것은 아무런 문제없이 일했다.
두 번째 방법은 올바른 방법입니다. DbNull과 null은 동일하지 않습니다. – dbugger
@dbugger : 첫 번째 것은 DataTable에서 읽고 두 번째 것은 SQL 데이터베이스 테이블에서 읽는 것입니다. DataTable의 null 값도 DBNull입니까? – user1080533
예, 그렇게 될 것입니다. 또 다른 구문은'if (myRdr [ "myValue"]가 DBNull 인 경우) ...'입니다. – DonBoitnott