Heim >Datenbank >MySQL-Tutorial >So implementieren Sie eine MySQL-Operation in Golang

So implementieren Sie eine MySQL-Operation in Golang

王林
王林nach vorne
2023-05-29 18:34:491228Durchsuche

Stellen Sie zunächst sicher, dass Sie Golang und MySQL korrekt installiert haben und dass Sie auch den MySQL-Treiber für Go installieren müssen. Dies geht ganz einfach mit dem folgenden Befehl:

go get -u github.com/go-sql-driver/mysql

Bevor wir das Go-Programm erstellen, müssen wir außerdem eine MySQL-Datenbank und eine Tabelle erstellen, um die Methode zur Verwendung von Golang für Datenbankoperationen zu demonstrieren.

Angenommen, wir haben eine Datenbank mit dem Namen „test_db“ erstellt und sie enthält eine Tabelle mit dem Namen „users“. Die Struktur der Tabelle ist wie folgt:

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  `age` smallint(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Als nächstes können wir mit dem Schreiben von Golang-Programmen beginnen. Das Folgende ist ein einfaches Programmbeispiel, das zeigt, wie man mit dem Golang-Treiber eine Verbindung zur MySQL-Datenbank herstellt und einige grundlegende Abfragevorgänge durchführt:

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // 连接 MySQL 数据库
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/test_db?charset=utf8mb4")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    // 执行查询操作
    rows, err := db.Query("SELECT * FROM users")
    if err != nil {
        panic(err.Error())
    }
    defer rows.Close()

    // 遍历查询结果
    for rows.Next() {
        var id int
        var name string
        var email string
        var age int
        err := rows.Scan(&id, &name, &email, &age)
        if err != nil {
            panic(err.Error())
        }
        fmt.Println(id, name, email, age)
    }

    // 检查是否存在错误
    err = rows.Err()
    if err != nil {
        panic(err.Error())
    }
}

Durch Ausführen des obigen Programms können wir erfolgreich eine Verbindung zur MySQL-Datenbank herstellen und mithilfe des „ SELECT-Anweisung Alle Datensätze in der Tabelle „Benutzer“ und Ausdrucken der Ergebnisse.

Zusätzlich zu Abfragen können wir den Golang-Treiber auch verwenden, um andere gängige MySQL-Vorgänge wie Einfügungen, Aktualisierungen und Löschungen auszuführen. Das Folgende ist ein einfaches Programmbeispiel:

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // 连接 MySQL 数据库
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/test_db?charset=utf8mb4")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    // 插入一条记录
    stmt, err := db.Prepare("INSERT INTO users(name, email, age) VALUES(?, ?, ?)")
    if err != nil {
        panic(err.Error())
    }
    defer stmt.Close()

    result, err := stmt.Exec("Tom", "tom@email.com", 30)
    if err != nil {
        panic(err.Error())
    }
    lastInsertId, _ := result.LastInsertId()
    fmt.Println("新增记录的 ID:", lastInsertId)

    // 更新一条记录
    stmt, err = db.Prepare("UPDATE users SET name=?, age=? WHERE id=?")
    if err != nil {
        panic(err.Error())
    }
    defer stmt.Close()

    result, err = stmt.Exec("Jerry", 25, 1)
    if err != nil {
        panic(err.Error())
    }
    affectRow, _ := result.RowsAffected()
    fmt.Println("受影响的行数:", affectRow)

    // 删除一条记录
    stmt, err = db.Prepare("DELETE FROM users WHERE id=?")
    if err != nil {
        panic(err.Error())
    }
    defer stmt.Close()

    result, err = stmt.Exec(1)
    if err != nil {
        panic(err.Error())
    }
    affectRow, _ = result.RowsAffected()
    fmt.Println("受影响的行数:", affectRow)
}

Mit dem obigen Programmbeispiel können wir gängige MySQL-Vorgänge wie Einfügen, Aktualisieren und Löschen erfolgreich ausführen.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine MySQL-Operation in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen