Ich schreibe ein Basisprogramm, um Werte aus der Datenbanktabelle zu lesen und in Tabelle auszudrucken. Der Tisch war von einem alten Programm bevölkert. Einige der Felder in der Zeile sind optional, und wenn ich versuche, sie als Zeichenfolge zu lesen, erhalte ich den folgenden Fehler:
%Vor%Nachdem ich weitere Fragen zu ähnlichen Problemen gelesen habe, habe ich folgenden Code entwickelt, um die Nullwerte zu behandeln. Die Methode funktioniert in der Praxis gut. Ich bekomme die Werte im Klartext und leere Zeichenfolge anstelle der Null-Werte.
Ich habe jedoch zwei Bedenken:
Tue ich es falsch? Gibt es einen besseren / saubereren / effizienteren / idiomatischeren Weg, um Werte aus der Datenbank zu lesen?
Ich finde es schwer zu glauben, dass eine moderne Sprache wie Go nicht mit der Datenbank zurechtkommt.
Vielen Dank im Voraus!
Code-Snippet:
%Vor%bearbeiten:
Ich möchte etwas wie das Folgende haben, wo ich mich nicht um NULL kümmern muss und sie automatisch als leere Zeichenfolge lesen muss.
%Vor% Es gibt verschiedene Typen für die Verarbeitung von null
-Werten, die von der Datenbank kommen, z. B. sql.NullBool
, sql.NullFloat64
, usw.
Zum Beispiel:
%Vor%Eine alternative Lösung wäre, dies in der SQL-Anweisung selbst zu behandeln, indem Sie die Funktion COALESCE verwenden (obwohl nicht alle DB dies unterstützen können).
Zum Beispiel könnten Sie stattdessen verwenden:
%Vor%, was effektiv 'state' einen Standardwert für eine leere Zeichenfolge geben würde, falls diese als NULL in der db gespeichert wurde.
Ich habe begonnen, den MyMySql-Treiber zu verwenden, da er eine bessere Schnittstelle zu der der std-Bibliothek verwendet.
Ich habe dann die Abfrage der Datenbank in einfach zu bedienende Funktionen verpackt. Dies ist eine solche Funktion:
%Vor%Dies zu verwenden ist so einfach wie dieses Snippet:
%Vor%Beachten Sie die schönen Zeilenmethoden, um einen bestimmten Wert zu erzwingen. Nullen werden von der Bibliothek behandelt und die Regeln sind hier dokumentiert: