You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.1 KiB
93 lines
2.1 KiB
package db
|
|
|
|
import (
|
|
_"github.com/go-sql-driver/mysql"
|
|
"database/sql"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
// 教程
|
|
// https://www.jianshu.com/p/ee87e989f149
|
|
//数据库配置
|
|
const (
|
|
userName = "go_test"
|
|
password = "R4MSD57Gmr42CRTw"
|
|
ip = "27.102.70.190"
|
|
port = "3306"
|
|
dbName = "go_test"
|
|
)
|
|
//Db数据库连接池
|
|
var DB *sql.DB
|
|
|
|
//注意方法名大写,就是public
|
|
func InitDB() bool {
|
|
//构建连接:"用户名:密码@tcp(IP:端口)/数据库?charset=utf8"
|
|
path := strings.Join([]string{userName, ":", password, "@tcp(",ip, ":", port, ")/", dbName, "?charset=utf8"}, "")
|
|
|
|
//打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql"
|
|
DB, _ = sql.Open("mysql", path)
|
|
//设置数据库最大连接数
|
|
DB.SetConnMaxLifetime(100)
|
|
//设置上数据库最大闲置连接数
|
|
DB.SetMaxIdleConns(10)
|
|
//验证连接
|
|
if err := DB.Ping(); err != nil{
|
|
fmt.Println("opon database fail",err)
|
|
return false
|
|
}
|
|
fmt.Println("connnect success")
|
|
return true
|
|
}
|
|
|
|
type User struct {
|
|
Id int
|
|
UserName string
|
|
Password string
|
|
}
|
|
|
|
func InsertUser(user User) (bool){
|
|
//开启事务
|
|
tx, err := DB.Begin()
|
|
if err != nil{
|
|
fmt.Println("tx fail")
|
|
return false
|
|
}
|
|
//准备sql语句
|
|
stmt, err := tx.Prepare("INSERT INTO nk_user (`name`, `password`) VALUES (?, ?)")
|
|
if err != nil{
|
|
fmt.Println("Prepare fail")
|
|
return false
|
|
}
|
|
//将参数传递到sql语句中并且执行
|
|
res, err := stmt.Exec(user.UserName, user.Password)
|
|
if err != nil{
|
|
fmt.Println("Exec fail")
|
|
return false
|
|
}
|
|
//将事务提交
|
|
tx.Commit()
|
|
//获得上一个插入自增的id
|
|
fmt.Println(res.LastInsertId())
|
|
return true
|
|
}
|
|
|
|
func SelectAllUser() ([]User) {
|
|
//执行查询语句
|
|
rows, err := DB.Query("SELECT * from nk_user")
|
|
if err != nil{
|
|
fmt.Println("查询出错了")
|
|
}
|
|
var users []User
|
|
//循环读取结果
|
|
for rows.Next(){
|
|
var user User
|
|
//将每一行的结果都赋值到一个user对象中
|
|
err := rows.Scan(&user.Id, &user.UserName, &user.Password)
|
|
if err != nil {
|
|
fmt.Println("rows fail")
|
|
}
|
|
//将user追加到users的这个数组中
|
|
users = append(users, user)
|
|
}
|
|
return users
|
|
}
|