Golang数据库操作增删改查

go 连接mysql进行数据库操作

  • 导入包,导入github那个驱动包是因为go本地的数据库操作需要用到那个驱动
"database/sql"
_ "database/sql/driver"
_ "github.com/go-sql-driver/mysql"
  • 下载一个navicat Premium可视化数据库操作软件,然后就可以创建数据库名称,用户的账号和密码
  • 连接到mysql数据库,返回一个DB指针

func connectDB() *sql.DB {
    /**
    设置最大的连接数,可以避免并发太高导致连接mysql出现too many connections的错误。
    设置闲置的连接数则当开启的一个连接使用完成后可以放在池里等候下一次使用。
     */
    db, err := sql.Open("mysql", "root:123456@tcp(localhost:3306)/app?charset=utf8")
    checkErr(err)
    db.SetMaxOpenConns(MaxOpenConn) //用于设置最大打开的连接数,默认值为0表示不限制。
    db.SetMaxIdleConns(MaxIdleConn) //用于设置闲置的连接数。
    db.Ping()
    return db
}
  • 创建表一个user表

type User struct {
    UserId int64
    UserName string
    UserPassword string
}


func createUserTable(db *sql.DB) {
    sqlStr := "CREATE TABLE IF NOT EXISTS `address` (`userId` SERIAL PRIMARY KEY,`userName` VARCHAR (20) NOT NULL,`userPassword` VARCHAR (20) NOT NULL) ENGINE = `innodb`,CHARACTER SET = utf8"
    _, err := db.Exec(sqlStr)
    checkErr(err)
}
  • 插入数据

func InsertUser(db *sql.DB, user *models.User) {
    stmt, err := db.Prepare("INSERT user SET userId=?,userName=?,userPassword=?")
    checkErr(err)
    stmt.Exec(user.UserId, user.UserName, user.UserPassword)
}
  • 查询数据,创建一个数据结构切片,并返回

func GetUserList(db *sql.DB, user *models.User) []models.User {
    stmt, _ := db.Prepare("SELECT * FROM user WHERE userId>? AND userId
  • 删除数据,并返回删除成功数量

func DeleteUser(db *sql.DB, userId int) int64 {
    result, err := db.Exec("DELETE FROM user WHERE userId=?", userId)
    checkErr(err)
    num, err := result.RowsAffected()
    checkErr(err)
    return num
}
  • 更新数据,并返回更新成功数量

func UpdateUser(db *sql.DB, args ...interface{}) int64 {
    stmt, err := db.Prepare("UPDATE user SET userName=?,userPassword=? WHERE userId=?")
    checkErr(err)
    result, err := stmt.Exec(args...)
    num, err := result.RowsAffected()
    return num
}


  • main函数

myDB:=db.InitDB()
u:=models.User{5,"q123456","w123456"}
db.InsertUser(myDB,&u)
db.GetUserList(myDB,&u)
db.DeleteUser(myDB,1)
db.UpdateUser(myDB,"国标","wwww",5)

你可能感兴趣的:(Golang数据库操作增删改查)