go操作mysql

go操作mysql

_

导入驱动

使用第三方开源库: github.com/go-sql-driver/mysql (mysql驱动)

github.com/jmoiron/sqlx (基于mysql驱动的封装)

    go get github.com/go-sql-driver/mysql 
    go get github.com/jmoiron/sqlx

使用

package main

import (
	// _ "github.com/go-sql-driver/mysql" 初始化驱动
	_ "github.com/go-sql-driver/mysql"
	"github.com/jmoiron/sqlx"
	"log"
)


// TUser 结构体
type TUser struct {
	Id int	`db:"id"`
	Username string `db:"username"`
	Password string `db:"password"`
	Salt string `db:"salt"`
}

// Db 声明全局Db
var Db *sqlx.DB


// 初始化连接
func init()  {
	//database, err := sqlx.Open("数据库类型","用户:密码@tcp(ip:端口)/数据库")
	var err error
	Db, err = sqlx.Open("mysql","root:123456@tcp(127.0.0.1:3306)/c")
	if err != nil {
		log.Fatalln("数据库连接失败")
	}
	log.Println("数据库连接成功!")
}

func main() {

	defer Db.Close()

	// 开启事物
	tx, err := Db.Begin()
	if err != nil {
		log.Println("开启事物错误:",err)
		return
	}

	var tu = &TUser{
		Username: "张三",
		Password: "123456",
		Salt:     "qwer",
	}

	//新增数据
	_, err = Db.Exec("insert into t_user(id,username, password, salt)values(default,?,?,?)",tu.Username,tu.Password,tu.Salt)
	if err != nil {
		log.Println("新增数据失败",err)
		tx.Rollback();
		return
	}

	// 修改数据
	_, err = Db.Exec("update t_user set username = ?,password = ? where id = ?","王五","666",7)
	if err != nil {
		log.Println("修改失败:",err)
		tx.Rollback();
		return
	}

	// 查看单个数据
	var tus [] TUser
	err = Db.Select(&tus, "select id,username,password,salt from t_user where id = ? ", 7)
	if err != nil {
		log.Println("查询id为7的数据失败:",err)
		tx.Rollback();
		return
	}

	// 删除数据
	_, err = Db.Exec("delete from t_user where id = ?",6)
	if err != nil {
		log.Println("删除失败:",err)
		tx.Rollback();
		return
	}

	// 查看全部数据
	// 装备一个切片接收
	users := make([]TUser,3)
	err = Db.Select(&users, "select id,username,password,salt from t_user")
	if err != nil {
		log.Println("查询错误:",err)
		tx.Rollback();
		return
	}

	// 遍历所有用户
	for _, u := range users {
		log.Println(u)
	}

	tx.Commit();

}
队列 2022-10-26
go操作redis 2022-10-29

评论区