2009-09-22 2 views
8

.NET 응용 프로그램에서 강력한 형식의 데이터 집합 (MyDataSet)을 만들었습니다. 간단히하기 위해 하나의 열 (MyCol)이있는 하나의 DataTable (MyDataTable)이 있다고 가정합니다. MyCol의 DataType 속성이 "System.Int32"로 설정되고 AllowDBNull 속성이 "true"로 설정되어 있습니다.강력하게 형식화 된 데이터 집합에 값으로 DBNull을 포함하려면 어떻게합니까?

수동으로 새 행을 만들어이 데이터 집합에 추가하고 싶습니다. 문제가없는 행을 다음과 같이 만듭니다.

좋아요. 그러나, 나는 DBNull이에 값을 설정하려고하면

myRow.MyCol = DBNull.Value; 

나는 그것을 할 수 없다 ... 그것은 int로 그 캐스팅 할 수없는 말거야. 이것은 int로 정의 되었기 때문에 의미가 있습니다. 그렇다면 DBNull을 어떻게 얻을 수 있습니까? DBNull을 가질 수 없습니까? 그게 AllowDBNull 속성을위한 것 아닌가요?

저는 분명히 근본적인 것이 없습니다. 누군가가 그것이 무엇인지 설명 할 수 있습니까?

편집 : "int?" DataType으로 사용하지만 Visual Studio에서 "열에 유효한 데이터 형식이 필요합니다"라고 입력하면 오류가 발생합니다.

+0

도움이 될 수 있습니다 : http://stackoverflow.com/questions/879095/nullable-int-column-in-dataset –

답변

13

MyDataTableRow 클래스에 SetMyColNull()이라는 생성 된 메서드가 있습니다.

myRow.SetMyColNull(); 

당신은 또한 수행 할 수 있습니다 myRow["MyCol"]은 (질문 OP 추가) object

편집 유형이다

myRow["MyCol"] = DBNull.Value; 

때문에 :

또한 생성 된 대응 방법이있다 이 값을 다시 읽으려면 IsMyColNull().

+1

에가 드! 나는 이것을 어떻게 알지 못 했습니까? 우수한! 많은 감사합니다! – Beska

0

int는 null을 허용하지 않지만 int는 무엇입니까? (INullable 버전) 않습니다. 그 데이터 유형이 필요하다고 생각합니다.

+1

불행히도, 이것은 작동하지 않습니다 ...나는 이것을 시도했다. (나는 이것에 대해 언급해야한다. 나는 그것을 편집 할 것이다.) 내가 이것을 할 때, "Column은 유효한 DataType이 필요하다"라는 문구를 띄운다. – Beska

1

두 가지가 있습니다.

DBNull을 허용하는 것은 값을 DBNull로 설정할 수 없다는 별도의 설정입니다.

DataSet XSD 인터페이스를 사용하여 설정했는데 ... "AllowDBNull = true"를 설정하지 않아야했지만 "NullValue = (null)"로 설정해야했습니다. 원래 "NullValue"는 "(Exception)"으로 설정되었습니다. 이것은 데이터 셋이 bieng.Fill()을 null로 받아 들일 수는 있지만 수동으로 값을 null로 설정할 수는 없다는 것을 의미합니다.

문제가 아닌지 확실하지 않지만 비슷한 것 같습니다.

+0

이것은 문자열에서만 작동합니다 ... –

1

데이터 세트에서 디자이너 모드로 이동하여 null로 설정하려는 필드를 마우스 오른쪽 버튼으로 클릭하고 속성 창에서 AllowDBNull을 True로 설정하고 NullValue를 (NULL)로 설정합니다. 그것은 나를 위해 올바르게 작동합니다! 최고 감사합니다!

+0

이것은 문자열에서만 작동합니다 ... –

관련 문제