Bagaimana untuk melaksanakan operasi mysql dalam golang

王林
Lepaskan: 2023-05-29 18:34:49
ke hadapan
1194 orang telah melayarinya

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
Salin selepas log masuk

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;
Salin selepas log masuk

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())
    }
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan