Laden...

MVC4: List<T> InvalidCastException

Erstellt von Endro vor 10 Jahren Letzter Beitrag vor 10 Jahren 957 Views
E
Endro Themenstarter:in
96 Beiträge seit 2008
vor 10 Jahren
MVC4: List<T> InvalidCastException

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

849 Beiträge seit 2006
vor 10 Jahren

Du hast einen null Wert in einem deiner Datensätze.
den musst Du explizit vorher abfragen, sonst kommt es zu diesem Fehler.

E
Endro Themenstarter:in
96 Beiträge seit 2008
vor 10 Jahren

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

849 Beiträge seit 2006
vor 10 Jahren

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

C
2.121 Beiträge seit 2010
vor 10 Jahren

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.