Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Rückgabewert Long oder Null
Talemantros - Mo 19.01.15 21:46
Titel: Rückgabewert Long oder Null
Hallo,
ich habe folgende Abfrage gegen eine Datenbank:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| public static long GetLongOktabinerIsCombinedWithMachine(string uebergabe) { long rueckgabe = 0; strSQl = "Select maschgrundid from oktabinergrund where oktnummer=?oktnummer";
using (MySqlConnection conn = new MySqlConnection(connStr)) { using (MySqlCommand cmd = new MySqlCommand(strSQl, conn)) { conn.Open();
cmd.Parameters.AddWithValue("?oktnummer", uebergabe); rueckgabe = Convert.ToInt64(cmd.ExecuteScalar());
conn.Close(); } }
return rueckgabe; } |
Das Datenbankfeld selber könnte aber
null sein.
Nun kommt ein Fehler, dass er DBNull nicht umwandeln kann.
Wie könnte ich damit am besten umgehen?
Danke
Gruß
Daniel
Ralf Jansen - Mo 19.01.15 22:29
Was soll denn in der Anwendung draus werden? 0, null oder noch was anderes?
Edit: Wen es null oder der typspezifische Default sein soll hilft folgende kleine Methode für die Standardtypen
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| public static T ConvertFromDB<T>(object value) { if ((value == DBNull.Value) || (value == null)) return default(T); else return (T)Convert.ChangeType(value, typeof(T)); }
public static long? GetLongOktabinerIsCombinedWithMachine(string uebergabe) { return ConvertFromDB<Int64?>(cmd.ExecuteScalar()); } |
Talemantros - Di 20.01.15 12:49
Hey Ralf,
vielen Dank wieder mal für die Hilfe.
Habe den Quelltext nachvollzogen und eingebaut.
Funktioniert einwandfrei.
Gruß
Daniel
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!