DataRow - Behandlung leerer Zellen einer Access Datenbanktabelle.
-
Hallo,
ich greife auf eine Access Datenbank zu.
Die Spalte "myColumn" hat Integerwerte, aber nicht alle Einträge haben einen Wert, d.h. einige Zellen sind leer.
Ein Zugriff auf diese, alaint number; number = (int)row["myColumn"];
endet mit einer InvalidCastException und der Meldung
beim umwandeln aus einer zahl muss der wert eine zahl sein, die kleiner als unendlich ist
Da muss ich wohl mit try/catch und den Exceptions arbeiten, oder kann ich das auch anders abfangen?
Hab das probiert:if ( null == (int)row["myColumn"] )
funzt nicht
ebensoif(Double.IsInfinity((double)row["myColumn"]))
funzt auch nicht.
MfG
-
ich hab bei mir den Wert in einer
int?
variable gespeichert.
int? ist nullable, sollte den zweck erfüllen.
auch vergleiche mit null sollten möglich sein.
Hoffe ich konnte helfen.
-
Keithy schrieb:
ich hab bei mir den Wert in einer
int?
variable gespeichert.
int? ist nullable, sollte den zweck erfüllen.
auch vergleiche mit null sollten möglich sein.
Hoffe ich konnte helfen.Nein, wie schon erwähnt, die beiden Versuche von mir führen zu der bereits zitierten Fehlermeldung.
-
Kann leider grad mit keiner Access DB aufwarten.
Meine MSSql Datenquelle hat auch Integerwerte, die null sein können.
dafür habe ich etwas in der Art verwendet:
http://msdn.microsoft.com/en-us/library/2cf62fcy(VS.80).aspxDein problem hörte sich so an, als würdest du Integerwerte bekommen,
die zum Teil aber auch sql-null sind, also leer.
Int32 kannst du aber nullable machen (sh.link).LG
-
Was gibt denn der Indexer der Klasse von
row
für einen Typ zurück?
Kann es sein, dass da ein Double zurückgegeben wird, welcher auf NaN steht?
Also schon mal mitDouble.IsNaN
geprüft?Grüssli
-
Achso, ich habe erst garnicht verstanden, was du mit int? meinst!
Jedenfalls habe ich es jetzt so gelöst:if(System.DBNull.Value != row["myColumn"]) my_value = (T)row["myColumn"];
Ich darf also nur dann casten, wenn die Datenzelle nicht leer ist,
wobei ich das T mit dem entsprechenden Datentypen (int, string, etc) ersetze.Danke und Gruß.