Golang 操作 mysql 数据库

Golang 操作 mysql 数据库

Posted by 锐玩道 on May 21, 2021

如果❤️我的文章有帮助,欢迎点赞、关注。这是对我继续技术创作最大的鼓励。更多往期文章在我的个人博客

安装驱动

与 大多编程语言一样,Golang 并没有自带任何数据库操作驱动。所以我们首先得安装第三方函数库。

这时候我也曾经有过疑问 Golang 中不是有 database/sql包?后来我搞明白了。database/sql包 提供了保证SQL或类SQL数据库的泛用接口,使用时必须注入一个数据库驱动。

由于我这次操作的为 mysql 数据库,所以使用的第三方库为:

https://github.com/go-sql-driver/mysql

使用命令 go get -u github.com/go-sql-driver/mysql 给 Golang 安装 MySQL 驱动

$ go get -u github.com/go-sql-driver/mysql
go: finding github.com/go-sql-driver/mysql v1.5.0
go: downloading github.com/go-sql-driver/mysql v1.5.0
go: extracting github.com/go-sql-driver/mysql v1.5.0

连接数据库

package main

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

func main() {
	// 数据源语法:"用户名:密码@[连接方式](主机名:端口号)/数据库名"
	dsn := "root@tcp(127.0.0.1:3306)/dianping"
	db, err := sql.Open("mysql", dsn)  // open() 方法不会真正的与数据库建立连接,只是设置连接需要的参数
	if err != nil {
		panic(err)
	}

	// err:=db.Ping()      //连接数据库
	defer db.Close()
}

操作数据库

mysql 建立测试表

create table test1(
    id int primary key,
    name varchar(10)
);

添加

sql:="insert into test1 values (1,'卡卡')"
    result,_:=db.Exec(sql)      // 执行SQL
    num,_:=result.RowsAffected(); // 获取受影响的行数
    fmt.Println("受影响的行数:",num)

查询

rows,_:=db.Query("select * from test1")
for rows.Next(){        //循环显示所有的数据
    rows.Scan(&id,&name)
    fmt.Println(id,"--",name)
}