Wie gehe ich mit Null-Rückgabewerten aus der Datenbank um?

9

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:

  1. Das sieht nicht effizient aus. Ich muss 25+ Felder wie dieses behandeln und das würde bedeuten, dass ich jedes von ihnen als Bytes lese und in String umwandle. Zu viele Funktionsaufrufe und Konvertierungen Zwei Strukturen, um die Daten zu bearbeiten und so weiter ...
  2. Der Code sieht hässlich aus. Es sieht bereits mit 2 Feldern verschachtelt aus und wird unlesbar, wenn ich zu 25 + gehe.

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%     
FlowRaja 21.02.2015, 06:20
quelle

4 Antworten

19

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%     
tmichel 21.02.2015, 08:53
quelle
8

go's Datenbank / sql-Paket Handle-Zeiger des Typs.

%Vor%

Sie sollten wie folgt kommen:

%Vor%     
mattn 21.02.2015 15:11
quelle
1

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.

    
M.L. 01.02.2017 17:06
quelle
-2

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:

Ссылка

    
Gary Willoughby 21.02.2015 16:44
quelle

Tags und Links