导入驱动
使用第三方开源库: 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();
}