Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
MVC4: List<T> InvalidCastException
Endro
myCSharp.de - Member



Dabei seit:
Beiträge: 96

Themenstarter:

MVC4: List<T> InvalidCastException

beantworten | zitieren | melden

Hallo zusammen,

Ich versuche mich jetzt schon seit Stunden and dieser Liste. Möchte die ausgelesenen Daten in die Liste schreiben, bekomme aber den
Fehler InvalidCastException bzw. Nullwerte(not Nullable)Items...


Hoffe Ihr könnt mir weiterhelfen ...

Die betreffenden Stellen.

public static readonly List<Pc> listPc = new List<PC>();
 ...
Select * from Tabellen 
     
 
   using (OracleDataReader reader = cmd.ExecuteReader())
   {
       listPc.clear();

       while (reader.Read())
       {
           listPc.Add(new listPcl
           {
               Machine =  reader.GetString(0),
               Id = reader.GetString(1),
               Kunde= reader.GetString(2),
               Garantie = reader.GetString(3), 
               Zeit = reader.GetString(4),
               VIP = reader.GetString(5),
               RepStatus = reader.GetString(6)
            });
        }
    }


Ich verwende Windows 8 Visual Studio 2012

Hoffe Ihr habt einen Tip
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Endro am .
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Du hast einen null Wert in einem deiner Datensätze.
den musst Du explizit vorher abfragen, sonst kommt es zu diesem Fehler.
private Nachricht | Beiträge des Benutzers
Endro
myCSharp.de - Member



Dabei seit:
Beiträge: 96

Themenstarter:

beantworten | zitieren | melden

Hi,

vielen Dank für die schnelle Antwort!
Wenn ich nur wüsste wie - alle Versuche endeten mit einem fatalen Fehler.

while (reader.Read())
       {
           listPc.Add(new listPcl
           {
               Machine =  reader[0] as string,               
               Id = reader[1] as string,
               Kunde= reader[2] as string,
               Garantie = reader[3] as string,
               Zeit = reader[4] as string,
               VIP = reader[5] as string,
               RepStatus = reader[6] as string
            });
        }

ist zwar besser - aber bekomme immer noch einen Fehler (Nullwert), dachte as string fängt das ab.

kannste mir einen Tip geben wie ich das angehen kann ohne an jeder Ecke zu kolidieren?

Endro
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Endro am .
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Das Problem dabei ist, das Du das Feld erst garnicht abfragen darfst.. eine Tatsache die ich selbst schon immer sehr fragwürdig fand. Andererseits gab es damals noch keine Nullable Typen.

Schau mal hier: OracleDataReader.IsDbNull
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2138

beantworten | zitieren | melden

Zitat
dachte as string fängt das ab.
Das kann der Cast nicht abfangen. Was sollte er bei null tun? Das solltest du schon selbst abfangen und so behandeln wie du es ausdrücklich haben willst.
Aus diesem Grund find ich das auch gar nicht so fragwürdig.
private Nachricht | Beiträge des Benutzers