Heim  >  Artikel  >  Backend-Entwicklung  >  Daten vom MySQL-Server lesen

Daten vom MySQL-Server lesen

PHPz
PHPzOriginal
2024-07-29 08:01:22881Durchsuche

Reading data from Mysql server

Importieren Sie die erforderlichen Pakete und bereiten Sie dann eine Struktur mit demselben Schema wie im Beispiel der Tabelle tb_student in der Datenbank vor. Später wird diese Struktur als Container für das Abfrageergebnis verwendet Datentyp.

package main
import "fmt"
import "database/sql"
import _ "github.com/go-sql-driver/mysql"


type student struct {
 id string,
 name string,
 age int,
 grade int,
}

Der verwendete Datenbanktreiber muss mit dem _-Zeichen importiert werden, denn obwohl er vom Datenbank-/SQL-Paket benötigt wird, interagieren wir nicht direkt mit dem Treiber.

Als nächstes erstellen Sie eine Funktion, um eine Verbindung zur Datenbank herzustellen.

func connect() (*sql.DB, error) {
 db, err := sql.Open("mysql","root:@tcp(127.0.0.1:3306)/db_learn_go")
 if err != nil {
  return nil, err
 }
 return db, nil
}

Das Verbindungszeichenfolgenschema für den von uns verwendeten MySQL-Treiber ist ziemlich einzigartig. Root@tcp(127.0.0.1:3306)/db_learn_go unten ist ein Verbindungszeichenfolgenschema, das auch unterwegs verwendet werden kann MYSQL-Treiber Treiber, wenn Sie verwenden Bei einem anderen MySQL kann das Verbindungsschema je nach verwendetem Treiber unterschiedlich sein.

user:password@tcp(host:port)/dbname
user@tcp(host:port)/dbname

Nachfolgend finden Sie eine Erläuterung der Verbindungszeichenfolge, die in der Funktion connect() verwendet wird.

root@tcp(127.0.0.1:3306)/db_learn_go
// user => root
// password =>
// host => 127.0.0.1 atau localhost
// port => 3306
// dbname => db_learn_go

Nachdem die Funktion zur Konnektivität mit der Datenbank erstellt wurde, ist es an der Zeit, den Vorgang des Lesens von Daten vom Datenbankserver zu üben. Bereiten Sie die Funktion vor
sqlQuery() mit dem folgenden Code.

func sqlQuery() {
 db, err := connect()
 if err != nil {
 fmt.Println(err.Error())
 return
 }
 defer db.Close()
 var age = 27
 rows, err := db.Query("select id, name, grade from tb_student where age = ?
 if err != nil {
 fmt.Println(err.Error())
 return
 }
 defer rows.Close()
 var result []student
 for rows.Next() {
 var each = student{}
 var err = rows.Scan(&each.id, &each.name, &each.grade)
 if err != nil {
 fmt.Println(err.Error())
 return
 }
 result = append(result, each)
 }
 if err = rows.Err(); err != nil {
 fmt.Println(err.Error())
 return
 }
 for _, each := range result {
 fmt.Println(each.name)
 }
}

Vergessen Sie nicht, jedes Mal, wenn eine neue Verbindung erstellt wird, die Verbindungsinstanz zu schließen. Sie können das Schlüsselwort defer wie im obigen Code verwenden, defer
db.Close() .
Die Funktion db.Query() wird zum Ausführen von SQL-Abfragen verwendet. Der zweite Parameter der Funktion ist variadisch und kann daher leer gelassen werden. Im obigen Code können Sie sehen, dass der Wert einer der where-Klauseln ein Fragezeichen (?) ist.

Das Vorzeichen wird dann durch den Wert im Parameter danach (den Wert der Altersvariablen) ersetzt. Diese Art der Abfrageschreibtechnik wird dringend empfohlen, um eine SQL-Injection zu verhindern. Die Funktion erzeugt eine Instanz vom Typ sql.*Rows , die ebenfalls geschlossen werden muss, wenn sie nicht mehr verwendet wird ( defer rows.Close() ). Als nächstes wird ein Array mit dem Elementtyp struct student mit dem Namen result vorbereitet. Später werden die Abfrageergebnisse in der Variablen gespeichert. Dann wird eine Schleife ausgeführt, wobei die Bedingungsreferenz rows.Next() ist. Diese Schleife wird so oft wie die Gesamtzahl der Datensätze ausgeführt, der Reihe nach vom ersten Datensatz bis zum Ende, einer nach dem anderen. Die Scan()-Methode von sql.Rows dient dazu, den Wert des Datensatzes abzurufen, der iteriert wird, um ihn in einer Zeigervariablen zu speichern. Die zum Speichern der Datensatzfelder verwendeten Variablen werden entsprechend den in der Abfrage ausgewählten Feldern sequentiell als variadische Parameter geschrieben. Weitere Einzelheiten finden Sie im Vergleich unten. // Abfrage
Wählen Sie ID, Name, Note ...
// scannen
rows.Scan(&each.id, &each.name, &each.grade ...
Die erhaltenen Datensatzdaten werden dann über die Anweisung
an den Ergebnis-Slice angehängt result = append(result, every) .
OK, rufen Sie jetzt einfach die Funktion sqlQuery() in main auf und führen Sie dann das Programm aus.

func main() {
sqlQuery()
}

Ich bin nur ein gewöhnlicher Blog-Autor. Wenn es immer noch zu viele Mängel gibt, verzeihen Sie mir bitte.

Das obige ist der detaillierte Inhalt vonDaten vom MySQL-Server lesen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn