Typen Konvertierungen - und Exceptionss wenn NULL

20/08/2008 - 17:00 von M.Erlinger | Report spam
Hallo

eine Frage an die Profis:
mir passiert es immer wieder, dass ich zum Beispiel bei Konvertierungen von
Daten aus einer DataRow mit einer Exception abstürze, weil ein Feld
NULL-Value erlaubt; wenn ich zum Beispiel hier
int iColumnValue = (int)currentRow["ColumnAusTable"];
... oder auch bei
int iColumnValue = Convert.ToInt32(currentRow..);
die Abfrage auf (!= System.DBnull.value) vergesse.

Wie kann hier vorgesorgt werden, dass die Konvertierung dann trotzdem
durchlàuft, aber dann in der Variable 0 oder null steht... ?
oder ist das so, dass ich immer vorher mit einem if-statement das zu
konvertierende Objekt abfragen muss?

Danke für Hinweise dazu
Schönen Gruß
Michael
 

Lesen sie die antworten

#1 Frank Dzaebel
20/08/2008 - 18:24 | Warnen spam
Hallo Michael,

es wàre nett, wenn Du erstmal Deine vorigen Postings abschliesst.
Ein Feedback, ob es funktioniert hat, o.à.


eine Frage an die Profis:
mir passiert es immer wieder, dass ich zum Beispiel bei Konvertierungen
von Daten aus einer DataRow mit einer Exception abstürze, weil ein Feld
NULL-Value erlaubt;
int iColumnValue = Convert.ToInt32(currentRow..);
die Abfrage auf (!= System.DBnull.value) vergesse.
Wie kann hier vorgesorgt werden, dass die Konvertierung dann trotzdem
durchlàuft, aber dann in der Variable 0 oder null steht... ?



Ein Beispiel:

public static T Convert<T>(object val) where T : struct
{
if (val.GetType() == typeof(T)) return (T)val;
TypeConverter tc = TypeDescriptor.GetConverter(typeof(T));
if (tc.CanConvertTo(typeof(T)) && tc.CanConvertFrom(val.GetType()))
return (T)tc.ConvertFrom(val);
else return default(T); // vielleicht irgendwo loggen ;-)
}

private void Form1_Load(object sender, EventArgs e)
{
//object obj = DBNull.Value;
object obj = "123";
// object obj = -321;
//object obj = new DateTime(2008, 08, 20);

int iColumnValue = Convert<int>(obj);
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen