查看: 112|回复: 0

go语言 操作mysql数据库

[复制链接]

3

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2023-1-18 21:27:43 | 显示全部楼层 |阅读模式
Go语言提供了对MySQL数据库的访问支持。要在Go程序中操作MySQL,你需要安装一个第三方库来提供对MySQL的支持。有几个不同的库可以用来连接和操作MySQL,包括:
go-sql-driver/mysql
github.com/go-sql-driver/mysql
github.com/jinzhu/gorm/dialects/mysql
推荐使用 github.com/go-sql-driver/mysql 驱动,这是 Go 语言官方推荐的 MySQL 驱动。安装方式如下:
go get github.com/go-sql-driver/mysql
安装好第三方库后,你就可以在Go程序中使用它们提供的API来连接到MySQL数据库并执行各种操作,例如执行SQL查询、插入、更新和删除数据等。下面是一个简单的例子,说明如何在Go程序中连接到MySQL数据库并执行一个查询:
package main
import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)
func main() {
    // 连接到MySQL数据库
    db, err := sql.Open("mysql", "user:password@/database")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()
    // 执行SQL查询
    rows, err := db.Query("SELECT * FROM users")
    if err != nil {
        panic(err.Error())
    }
    // 遍历查询结果
    for rows.Next() {
        var id int
        var name string
        var email string
        err = rows.Scan(&id, &name, &email)
        if err != nil {
            panic(err.Error())
        }
        fmt.Println(id, name, email)
    }
}
// 使用数据库配置信息方式
dbConfig := &mysql.Config{
    User:                 "root",
    Passwd:               "root",
    Net:                  "tcp",
    Addr:                 "127.0.0.1:3306",
    DBName:               "test",
    AllowNativePasswords: true,
    Params: map[string]string{
        "charset": "utf8mb4",
    },
}
// 连接数据库
db, err := sql.Open("mysql", dbConfig.FormatDSN())
if err != nil {
    log.Fatal(err)
}
// 关闭数据库连接
defer db.Close()
// 准备插入数据的SQL语句
stmt, err := db.Prepare("INSERT INTO users(name, age) VALUES (?, ?)")
if err != nil {
    log.Fatal(err)
}
// 执行插入操作
res, err := stmt.Exec("Tom", 25)
if err != nil {
    log.Fatal(err)
}
// 获取插入的ID
lastID, err := res.LastInsertId()
if err != nil {
    log.Fatal(err)
}
// 获取影响的行数
rowsAffected, err := res.RowsAffected()
if err != nil {
    log.Fatal(err)
}
fmt.Println(lastID, rowsAffected) // 输出插入的ID和影响的行数
//删除操作
stmt, err := db.Prepare("DELETE FROM table_name WHERE id=?")
if err != nil {
    log.Fatal(err)
}
_, err = stmt.Exec(1)
if err != nil {
    log.Fatal(err)
}
//修改操作
stmt, err := db.Prepare("UPDATE table_name SET name=? WHERE id=?")
if err != nil {
    log.Fatal(err)
}
_, err = stmt.Exec("new name", 1)
if err != nil {
    log.Fatal(err)
}
// 执行SQL查询
    rows, err := db.Query("SELECT * FROM users")
    if err != nil {
        panic(err.Error())
    }
    // 遍历查询结果
    //参考文章开头查询遍历
注意:在执行删除和修改操作时需要注意事务处理,以确保数据库操作的完整性和一致性。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表