NULL 인 DataColumn 값을 참조할 때 InvalidCastException 예외

기술 자료 번역 기술 자료 번역
기술 자료: 310371 - 이 문서가 적용되는 제품 보기.
이 문서에서는 다음 Microsoft .NET Framework 클래스 라이브러리의 네임스페이스를 참조합니다.
  • System.Data
  • System.Data.SqlClient
모두 확대 | 모두 축소

이 페이지에서

현상

NULL, 형식화된 또는 형식화되지 않은 여부를 DataColumn 값을 참조할 때 예외가 나타납니다.

대해 형식화된 데이터 집합, 다음과 같은 예외가 나타납니다.
invalidcast.exe의 형식 'System.Data.StrongTypingException' 처리되지 않은 예외가 발생했습니다.
추가 정보: DBNULL 때문에 값을 가져올 수 없습니다.
대해 형식화되지 않은 DataSet, 다음과 같은 예외가 나타납니다.
microsoft.visualbasic.dll의 형식 'System.InvalidCastException' 처리되지 않은 예외가 발생했습니다.
추가 정보: '' 문자열' 입력합니다 DBNULL' 형식에서 웹캐스트 유효하지 않습니다.

원인

원인 1

형식화된 데이터 집합 을 사용할 때 NULL 열 값을 참조할 때 예외가 발생됩니다.

원인 2

형식화되지 않은 데이터 집합 을 사용하는 경우 열 값은 NULL입니다 및 이를 지정할 변수를 NULL 지원하지 않습니다.

해결 방법

원인 1

해당 값을 액세스하기 전에 열에 대한 NULL 테스트하십시오. DataRow.IsNull 메서드를 사용하여 형식화되지 않은 DataSet 에 사용하십시오. 형식화된 데이터 집합 에서 DataRow.IscolumnnameNull 속성을 사용하십시오.

원인 2

NULL 저장할 수 있는 적절한 데이터 형식의 변수를 사용하십시오.

현재 상태

이것은 의도적으로 설계된 동작입니다.

추가 정보

Windows Mobile 기반 스마트폰에 GPRS 연결이 구성되어 있는지 확인합니다

  1. Microsoft Visual Studio .NET 시작하십시오.
  2. Visual Basic .NET 에서는 새 Windows 응용 프로그램 프로젝트를 만듭니다. 기본적으로 Form1이 프로젝트에 추가됩니다.
  3. System.Data 네임스페이스에 대한 참조가 프로젝트에 포함되어 있는지 확인하십시오.
  4. Form1에 Button 컨트롤을 배치하십시오.
  5. Name 속성은 단추의 btnUntypeUntypeText 속성을 변경하십시오.
  6. 시스템 네임스페이스 및 System.Data 네임스페이스에 Imports 문을 사용하여 나중에 코드에서 네임스페이스의 선언을 한정하지 않아도 됩니다. 다음 코드를 Form1의 "일반 선언" 섹션 추가:
       Imports System
       Imports System.Data
       Imports System.Data.SqlClient
    					
  7. btnUntype 이벤트에 다음 코드를 추가하여:
            Dim str As String
            Dim ds As New DataSet()
            Dim r As DataRow
            Dim con As New SqlConnection("server=myserver;integrated security=sspi;database=northwind")
            Dim da As New SqlDataAdapter("select * from customers where customerid='ANTON'", con)
            da.Fill(ds, "customer")
            r = ds.Tables(0).Rows(0)
            'Uncomment to check for Null. 
            'If r.IsNull("fax") Then
            '   MessageBox.Show("Value is Null")
            'End If
            str = r("fax") 'Comment line to check for Null.
            MessageBox.Show(str) 'Comment line to check for Null.
            
    					
  8. 사용자 환경에 대한 적절한 서버 이름으로 (myserver) 연결 문자열을 수정하십시오.
  9. 프로젝트를 저장하십시오. 디버그 메뉴에서 프로젝트를 실행하려면 시작 을 클릭하십시오.
  10. Untype 를 클릭하십시오. 형식화되지 않은 DataSet 이전 언급한 예외가 나타납니다.
  11. IF 문이 주석 처리 제거 및 NULL을 확인하려면 IF 문 아래 줄을 주석으로 처리하십시오.
  12. 프로젝트를 저장하십시오. 디버그 메뉴에서 시작 을 누른 다음 프로젝트를 실행하십시오. 메시지 상자에 "값 입니다 Null" 표시됩니다.
  13. Form1에 다른 Button 컨트롤을 배치하십시오.
  14. Name 속성은 단추의 btntype형식Text 속성을 변경하십시오.
  15. Northwind 데이터베이스에서 고객 테이블을 사용하여 형식화된 데이터 집합 을 만듭니다. SQLDataAdaptersqlda 로 이름을 바꿉니다.
  16. btntype 이벤트에 다음 코드를 추가합니다:
            sqlda.Fill(DataSet11)
            Dim str As String
            Dim int As Integer
            Dim cust As DataSet1.CustomersRow
            cust = DataSet11.Customers.Rows(0)
            'Uncomment to catch null values.  
            'If cust.IsFaxNull Then
            '    MessageBox.Show("Value is Null")
            'End If
            str = cust.Fax() 
            MessageBox.Show(str)
            '    Comment line to check for Null.
    					
  17. 응용 프로그램을 실행하고 형식 단추를 클릭하십시오. 예외를 알 수 있습니다.
  18. If... Then 블록 코드의 주석 처리를 제거하여 및 코드의 마지막 두 줄을 주석으로 처리하십시오.
  19. 응용 프로그램, 저장 및 다음 응용 프로그램을 실행하고 메시지 상자가 나타납니다.

참조

형식화된 데이터 집합을 만드는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
315678Visual Basic .NET을 사용하여 형식화된 데이터 집합을 사용하여, 만드는 방법
ADO.NET에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
313590ADO.NET 로드맵

속성

기술 자료: 310371 - 마지막 검토: 2007년 2월 27일 화요일 - 수정: 2.7
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ADO.NET 2.0
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
키워드:?
kbmt kbprb kbsystemdata KB310371 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com