go-sql-driver/mysql
package main

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

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

    // 插入数据
    insertStmt, err := db.Prepare("INSERT INTO users(name, age) VALUES(?, ?)")
    if err != nil {
        panic(err.Error())
    }
    res, err := insertStmt.Exec("Alice", 20)
    if err != nil {
        panic(err.Error())
    }
    id, err := res.LastInsertId()
    if err != nil {
        panic(err.Error())
    }
    fmt.Println("Inserted record id:", id)

    // 查询数据
    rows, err := db.Query("SELECT id, name, age FROM users WHERE age >= ?", 18)
    if err != nil {
        panic(err.Error())
    }
    defer rows.Close()
    for rows.Next() {
        var id int
        var name string
        var age int
        err := rows.Scan(&id, &name, &age)
        if err != nil {
            panic(err.Error())
        }
        fmt.Println("Record:", id, name, age)
    }

    // 更新数据
    updateStmt, err := db.Prepare("UPDATE users SET age = ? WHERE id = ?")
    if err != nil {
        panic(err.Error())
    }
    res, err = updateStmt.Exec(21, id)
    if err != nil {
        panic(err.Error())
    }
    affectedRows, err := res.RowsAffected()
    if err != nil {
        panic(err.Error())
    }
    fmt.Println("Updated", affectedRows, "rows")

    // 删除数据
    deleteStmt, err := db.Prepare("DELETE FROM users WHERE age < ?")
    if err != nil {
        panic(err.Error())
    }
    res, err = deleteStmt.Exec(20)
    if err != nil {
        panic(err.Error())
    }
    affectedRows, err = res.RowsAffected()
    if err != nil {
        panic(err.Error())
    }
    fmt.Println("Deleted", affectedRows, "rows")
}
PrepareExecQuery