go语言怎么连接mysql,并实现增删改查

859 2023年04月12日 Golang

要使用Go语言连接MySQL,需要使用第三方库。常用的库包括:

  • go-sql-driver/mysql
  • go-mysql-driver/mysql
  • mysql-connector-go

这里以go-sql-driver/mysql为例,演示如何连接MySQL并实现增删改查操作。

  1. 安装go-sql-driver/mysql库

使用go命令行工具安装:

go get -u github.com/go-sql-driver/mysql
  1. 连接MySQL
db, err := sql.Open("mysql", "user:password@tcp(host:port)/da\*\*\*se")
if err != nil {
    log.Fatal(err)
}
defer db.Close()

其中,user为MySQL用户名,password为密码,host为MySQL服务器地址,port为端口号,da***se为要连接的数据库名。sql.Open()函数返回一个*sql.DB对象,用于执行SQL语句。

  1. 增加数据
stmt, err := db.Prepare("INSERT INTO users(name, age) VALUES(?, ?)")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

_, err = stmt.Exec("Alice", 20)
if err != nil {
    log.Fatal(err)
}

使用Prepare()函数创建一个预编译的SQL语句,然后使用Exec()函数执行该语句。参数用?占位符表示,后面的参数列表会替换掉?。

  1. 查询数据
rows, err := db.Query("SELECT * FROM users WHERE age > ?", 18)
if err != nil {
    log.Fatal(err)
}
defer rows.Close()

for rows.Next() {
    var id int
    var name string
    var age int
    err := rows.Scan(&id, &name, &age)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(id, name, age)
}

使用Query()函数执行查询语句,返回一个*sql.Rows对象。然后使用Next()函数遍历每一行数据,使用Scan()函数获取每一列的值。

  1. 更新数据
stmt, err := db.Prepare("UPDATE users SET age = ? WHERE name = ?")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

_, err = stmt.Exec(21, "Alice")
if err != nil {
    log.Fatal(err)
}

使用Prepare()函数创建一个预编译的更新语句,然后使用Exec()函数执行该语句。注意,参数的顺序要和占位符的顺序一致。

  1. 删除数据
stmt, err := db.Prepare("DELETE FROM users WHERE age < ?")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

_, err = stmt.Exec(18)
if err != nil {
    log.Fatal(err)
}

使用Prepare()函数创建一个预编译的删除语句,然后使用Exec()函数执行该语句。注意,参数的顺序要和占位符的顺序一致。

评论

0 条评论
OBJUI公众号
热门文章
  • go语言怎么连接mysql,并实现增删改查

    要使用Go语言连接MySQL,需要使用第三方库。常用的库包括: 这里以go-sql-driver/mysql为 […]

  • 使用Echarts画甘特图

    Echarts是一个非常强大的图表库, 下面我们来使用它来画甘特图,

  • Beego实现JWT

    Beego是一个基于Go语言的Web框架,实现JWT认证可以通过beego的中间件机制来实现,下面是一个简单的 […]

  • beego实现模块化开发

    Beego 框架可以通过模块化开发来提高项目的可维护性和可扩展性,可以将一个大型的应用划分为多个模块,每个模块独立维护,有自己的控制器、视图和模型等。

  • go实现MD5

    在这个示例中,我们使用了Go标准库中的crypto/md5包来计算一个字符串的MD5值。首先,我们将字符串转换 […]

  • Linux服务器Rsync结合inotify同步文件

    一、实现效果 服务器A:192.168.161.150 (分布服务器)(rsync客户端+inotify) 服务器B:192.168.161.151 (WEB服务器1)(rsync服务端) 服务器C:192.168.161.152 (WEB服务器2)(rsync服务端) 说明:服务器A有文件更新,自动同步到服务器B和C

  • 使用Axios+PHP+JWT实现登录认证

    JWT(JSON Web Token),顾名思义就是可以在Web上传输的token,这种token是用JSON格式进行format的。它是一个开源标准(RFC7519),定义了一个紧凑的自包含的方式在不同实体之间安全的用JSON格式传输信息。

  • wordpress自定义配置

    在制作插件时,自定义的配置项是经常会遇到的。在左侧“配置”的常规菜单下添加配置以下代码可实现:

  • wordpress中使用事务处理

    修改Mysql引擎,因为InnoDB才支持事务

  • PHP解决雪花算法ID在前端精度丢失的问题

    雪花算法(Snowflake)是一种用于生成全局唯一ID的算法,其基本思路是结合时间戳、机器ID、租约ID和序列号生成一个64位的数据,从而保证ID的唯一性。 雪花算法的生成过程如下: