Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk melaksanakan operasi mysql dalam golang

Bagaimana untuk melaksanakan operasi mysql dalam golang

王林
王林ke hadapan
2023-05-29 18:34:491155semak imbas

Pertama, pastikan anda telah memasang Golang dan MySQL dengan betul. Anda juga perlu memasang pemacu MySQL Go. Ini boleh dilakukan dengan mudah dengan arahan berikut:

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

Sebelum mencipta program Go, kita juga perlu mencipta pangkalan data MySQL dan jadual untuk menunjukkan kaedah menggunakan Golang untuk operasi pangkalan data.

Andaikan kami telah mencipta pangkalan data bernama "test_db" dan ia mengandungi jadual bernama "pengguna". Struktur jadual adalah seperti berikut:

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;

Seterusnya, kita boleh mula menulis program Golang. Berikut ialah contoh atur cara mudah yang menunjukkan cara menggunakan pemacu Golang untuk menyambung ke pangkalan data MySQL dan melaksanakan beberapa operasi pertanyaan asas:

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())
    }
}

Dengan menjalankan program di atas, kami berjaya menyambung ke pangkalan data MySQL dan gunakan pernyataan " PILIH" menanyakan semua rekod dalam jadual "pengguna" dan mencetak hasilnya.

Selain pertanyaan, kami juga boleh menggunakan pemacu Golang untuk melaksanakan operasi MySQL biasa yang lain seperti sisipan, kemas kini dan pemadaman. Berikut ialah contoh atur cara mudah:

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)
}

Dengan contoh atur cara di atas, kami berjaya melaksanakan operasi MySQL biasa seperti memasukkan, mengemas kini dan memadam.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan operasi mysql dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam