Ursprüngliche Abfrage:
Die Go SQL-Dokumentation impliziert, dass das Abrufen Daten aus einer Datenbank erfordern statische Kenntnisse über die Spaltenanzahl und Datentypen. Dies wirft Bedenken hinsichtlich Ad-hoc-Abfragen und der Handhabung dynamischer Tabellenstrukturen auf.
Antwort:
Es stimmt zwar, dass Rows.Scan() feste Parameter erfordert, die Funktion sql.Rows Der Typ stellt die Columns()-Methode bereit, um Spaltennamen dynamisch abzurufen. Darüber hinaus unterstützt die Scan()-Methode die folgenden Optionen:
Lösung:
Durch die Kombination dieser Funktionen können Sie flexiblen Code erstellen, der Ad-hoc-Abfragen und dynamische Tabellenstrukturen unterstützt:
<code class="go">columnNames, err := rows.Columns() if err != nil { // Handle error } columns := make([]interface{}, len(columnNames)) columnPointers := make([]interface{}, len(columnNames)) for i := range columnNames { columnPointers[i] = &columns[i] } if err := rows.Scan(columnPointers...); err != nil { // Handle error } // columns slice now contains decoded column values for the current row</code>
Wenn Sie über zusätzliche Tabelleninformationen verfügen, können Sie die Logik nach Bedarf optimieren.
Das obige ist der detaillierte Inhalt vonKann das SQL-Paket von Go dynamische Abfragen und Tabellenstrukturen verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!