go 连接mysql进行数据库操作
- 导入包,导入github那个驱动包是因为go本地的数据库操作需要用到那个驱动
"database/sql"
_ "database/sql/driver"
_ "github.com/go-sql-driver/mysql"
- 下载一个navicat Premium可视化数据库操作软件,然后就可以创建数据库名称,用户的账号和密码
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
}
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<?")
rows, err := stmt.Query(1, 9)
checkErr(err)
s, _ := rows.Columns()
length := len(s);
userList := make([]models.User, length)
for rows.Next() {
err := rows.Scan(&user.UserId, &user.UserName, &user.UserPassword)
checkErr(err)
fmt.Println("password", user.UserPassword)
fmt.Println("name", user.UserName)
fmt.Println("id", user.UserId)
userList = append(userList, *user)
}
return userList
}
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
}
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)