InvalidCastException výjimku při odkazu na hodnotu objekt DataColumn, které je NULL

Překlady článku Překlady článku
ID článku: 310371 - Produkty, které se vztahují k tomuto článku.
Tento článek se týká následujících oborů názvů knihovny tříd Microsoft .NET Framework:
  • System.data
  • System.data.SqlClient
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Při odkazu hodnotu objekt DataColumn je NULL, zda zadaný nebo netypovou obdržíte výjimku.

Zadaný objektů DataSet obdržíte následující výjimce:
Došlo k neošetřené výjimce typu 'System.Data.StrongTypingException v invalidcast.exe
Další informace: Nelze získat hodnotu, protože je DBNULL.
Netypovou objektů DataSet obdržíte následující výjimce:
V microsoft.visualbasic.dll došlo k neošetřené výjimce typu 'System.InvalidCastException
Další informace: osazení z typu 'DBNULL zadejte 'řetězce není platný.

Příčina

Příčina 1

Při použití zadaného DataSet je způsobila výjimku při odkazu na hodnotu sloupce je NULL.

Příčina 2

Při použití netypovou DataSet je hodnota sloupce NULL a proměnné, ke kterému přiřadíte jej nepodporuje NULL.

Řešení

Příčina 1

Testování sloupce NULL před přístup jeho hodnotu. V netypovou DataSet použijte metodu DataRow.IsNull. Vlastnost DataRow.IscolumnnameNull použít v zadaný DataSet.

Příčina 2

Použít proměnnou typu příslušná data, která lze ukládat NULL.

Prohlášení

Toto chování je záměrné.

Další informace

Kroky pro reprodukci tohoto chování

  1. Spusťte aplikaci Visual Studio .NET.
  2. Vytvořit nový projekt aplikace Windows v Visual Basic .NET. Ve výchozím nastavení je Form1 přidán do projektu.
  3. Zkontrolujte, zda projekt obsahuje odkaz na obor názvů System.data.
  4. Umístěte ovládacího prvku tlačítko na Form1.
  5. Vlastnost Name na tlačítko změnit btnUntype a vlastnost text k Untype.
  6. Pomocí příkazu Imports v oboru názvů System a oboru názvů System.data, takže není nutné kvalifikovat deklarace obory názvů později v kódu. V části "Obecné deklarační" Form1 přidejte následující kód:
       Imports System
       Imports System.Data
       Imports System.Data.SqlClient
    					
  7. Přidejte následující kód v události 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. Upravit řetězec připojení (tentoserver) jako název příslušného serveru pro vaše prostředí.
  9. Uložit projekt. V nabídce Debug klepněte na tlačítko Start spustit projektu.
  10. Klepněte na tlačítko Untype. Všimněte si, že výjimka dřívější uvedené pro netypovou DataSet.
  11. Příkaz IF vložte a komentář řádky pod příkazu IF zkontrolovat NULL.
  12. Uložit projekt. V nabídce Debug klepněte na tlačítko Start a potom spusťte projektu. Všimněte si, že okno zprávy zobrazují "Hodnota je null".
  13. Umístěte jiného ovládacího prvku tlačítko na Form1.
  14. Vlastnost Name na tlačítko změnit btntype a vlastnost text na Typ.
  15. Vytvořit zadaný DataSet pomocí tabulky Zákazníci v databázi Northwind. Přejmenovat SQLDataAdaptersqlda.
  16. Přidejte následující kód události 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. Spusťte aplikaci a klepněte na tlačítko Typ. Všimněte si, že výjimka.
  18. Vložte blok Pokud... Then kód a komentář poslední dva řádky kódu.
  19. Uložte aplikaci a potom spusťte aplikaci a Všimněte si okno zprávy.

Odkazy

Další informace o vytváření zadaný DataSet klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
315678Jak vytvořit, použijte zadaný DataSet pomocí jazyka .NET
Další informace o ADO.NET klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
313590Návod pro ADO.NET

Vlastnosti

ID článku: 310371 - Poslední aktualizace: 27. února 2007 - Revize: 2.7
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbmt kbprb kbsystemdata KB310371 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:310371

Dejte nám zpětnou vazbu

 

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