go-bot-dongl/database/database.go

115 lines
2.7 KiB
Go

package database
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
uuid "github.com/satori/go.uuid"
)
var (
DB *sql.DB
)
func Database() {
DB, _ = sql.Open("mysql", "sginIn:sXeP48Xje2NLJ4Ek@(112.125.95.197:3306)/sginin")
//设置数据库最大连接数
DB.SetConnMaxLifetime(100)
//设置上数据库最大闲置连接数
DB.SetMaxIdleConns(10)
//验证连接
if err := DB.Ping(); err != nil {
fmt.Println("数据库连接失败!")
return
}
fmt.Println("数据库链接成功!")
}
// 表结构
type User struct {
Uid string
Account string
Username string
Role string
Integration int
}
func SelectData() string {
rows, err := DB.Query("SELECT * FROM User")
if err != nil {
fmt.Println(err.Error())
}
var integration_ sql.NullInt64
var uid_, account_wx_, username_, role_ sql.NullString
var user User
var stringLine string
for rows.Next() {
err := rows.Scan(&uid_, &account_wx_, &username_, &role_, &integration_)
if err != nil {
fmt.Println(err.Error())
}
user = User{
Uid: uid_.String,
Account: account_wx_.String,
Username: username_.String,
Role: role_.String,
Integration: int(integration_.Int64),
}
fmt.Println(user)
stringLine = fmt.Sprintf("\n uid: %s \n account: %s \n username:%s \n role: %s \n integration: %d \n",
user.Uid, user.Account, user.Username, user.Role, user.Integration)
}
return stringLine
}
func SelectUserIntegrationByNickName(nickname string) int {
var integration_ sql.NullInt64
var user User
row := DB.QueryRow("SELECT integration FROM User where username = '" + nickname + "'")
err := row.Scan(&integration_)
if err != nil {
row, err := DB.Exec("insert into User(uid,account_wx,username,role,integration) "+
"values (?,?,?,?,?)", uuid.NewV4().String(), nickname, nickname, "user", 1)
if err != nil {
fmt.Println("exec success, ", row)
fmt.Println("exec failed, ", err)
return 9990999
}
}
row = DB.QueryRow("SELECT integration FROM User where username = '" + nickname + "'")
err = row.Scan(&integration_)
if err != nil {
fmt.Println(err)
}
user = User{
Integration: int(integration_.Int64),
}
return user.Integration
}
func UpDataUserIntegrationByNickName(nickname string, integration int) int {
var integration_ sql.NullInt64
var user User
row := DB.QueryRow("update User set integration=? where username=?", integration+1, nickname)
err := row.Scan(&integration_)
if err != nil {
fmt.Println(err)
}
row = DB.QueryRow("SELECT integration FROM User where username = '" + nickname + "'")
err = row.Scan(&integration_)
if err != nil {
fmt.Println(err)
}
user = User{
Integration: int(integration_.Int64),
}
return user.Integration
}