Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Nullable
flyhigh83 - Mo 31.01.11 16:49
Titel: Nullable
Hallo mal wieder.
Habe hier im Forum und auch schon auf der MSDN Seite gesucht aber irgendwie kappier ich das noch nicht.
Ich habe ein Problem mit Variable welche auch den Wert "null" annehmen können, da in der Datenbank der Wert auch "null" ist. In meiner Form habe ich folgende Abfrage, und will damit eine Liste füllen. Die Liste habe ich mir angelegt, da ich alle Bilder durchgehen will, und schaue, ob sich etwas geändert hat in der DB und wenn, wird das Bild entsprechned einigen fixen vorgaben umbenannt. Mein Problem ist wenn in der Tabelle
"Table1" die
"steHausnr" den Wert
"null" hat, erhalte ich einen Fehler, da mein Wert aus der Klasse nicht null annehmen darf. Dies hatte ich dann abgeändert. Siehe unten.
C#-Quelltext
1: 2: 3: 4: 5: 6:
| var FileQuery = (from table1 in dbDataSet.table1 select new FileAutoRenamer { StrasseHausnr = Convert.ToString(table1.steHausnr) }); OrdnerBilder.AddRange(FileQuery.ToList()); |
Meine
abgeänderte Klasse
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| public class FileAutoRenamer { private string? _StrasseHausnr; public string? StrasseHausnr { get { return this._StrasseHausnr; } set { if (value != null) { this._StrasseHausnr = value; } else this._StrasseHausnr = " "; } } } |
Den Fehler den ich jedes mal erhalten beim Kompalieren ist
Fehler 1 Der Typ "string" darf keine NULL-Werte zulassen, wenn er als T-Parameter im generischen Typ oder in der generischen Methode "System.Nullable<T>" verwendet werden soll.
Der Fehler bezieht sich auf siehe Quelltext "*Code Fehler".
Was mache ich falsch. Ich habe bisher nur structs gesehen, welche sich null setzen lasse oder auch ganznormale Variablen, was ich an der Variable in der Klasse anders?
Ralf Jansen - Mo 31.01.11 16:55
string ist bereits ein nullable Type. Ein string? macht daher wenig Sinn was dir der Compiler umgehend auch mitteilt.
flyhigh83 - Mo 31.01.11 17:06
Ralf Jansen hat folgendes geschrieben : |
string ist bereits ein nullable Type. Ein string? macht daher wenig Sinn was dir der Compiler umgehend auch mitteilt. |
Ja das hatte ich auch eigentlich schon gewusst. Aber ich kapier es irgend wie nicht, denn wenn ich es ohne Nullable versuche
sagt er mir sobald er auf etwas stößt was "null" ist
Der Wert für Spalte steHausnr in Tabelle table1 ist DBNull.
Was mache ich also da falsch?
Trashkid2000 - Mo 31.01.11 17:09
Naja, DBNull und null ist nicht das selbe.
Normalerweise hast Du für Felder, die nullable sind, eine Methode, worüber Du auf DBNull abfragen kannst.
Diese müsste in Deinem Fall "IssteHausnrNull()" oder so ähnlich heißen.
flyhigh83 - Mo 31.01.11 17:37
Trashkid2000 hat folgendes geschrieben : |
Naja, DBNull und null ist nicht das selbe.
Normalerweise hast Du für Felder, die nullable sind, eine Methode, worüber Du auf DBNull abfragen kannst.
Diese müsste in Deinem Fall "IssteHausnrNull()" oder so ähnlich heißen. |
Danke,
hat mir super weitergeholfen.
Lösung:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| var FileQuery = (from table1 in dbDataSet.table1 select new FileAutoRenamer { StrasseHausnr = table1 == null ? null : (table1.IssteHausnrNull() ? null : table1.steHausnr.ToString()), }); OrdnerBilder.AddRange(FileQuery.ToList()); |
Natürlich kann man jetzt die Setter und Gett ganz normal lassen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!