package main
import (
"database/sql"
"fmt"
"time"
_ "github.com/go-sql-driver/mysql"
)
const (
URL = "127.0.0.1"
PORT = "3306"
DATABASESNAME = "shiro_test"
USER = "root"
PASSWORD = "123456"
)
type Use struct {
uid int
username string
password string
salt string
}
func main() {
fmt.Println("Hello World!")
url := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8", USER, PASSWORD, URL, PORT, DATABASESNAME)
DB := mySqlConnet(url)
use := new(Use)
use.username = "你好呀"
use.password = "helloword!!!"
use.salt = use.username + use.password
fmt.Println(use)
use.uid = 5
deleteData(DB, 5)
defer DB.Close()
}
func mySqlConnet(url string) (db *sql.DB) {
DB, _ := sql.Open("mysql", url)
DB.SetConnMaxLifetime(100 * time.Second)
DB.SetMaxOpenConns(100)
DB.SetMaxIdleConns(10)
if err := DB.Ping(); err != nil {
fmt.Println(err)
}
fmt.Println("open database success")
return DB
}
func queryOne(DB *sql.DB, id int) {
use := new(Use)
row := DB.QueryRow("select * from user where uid=?", id)
if err := row.Scan(&use.uid, &use.username, &use.password, &use.salt); err != nil {
fmt.Println(err)
return
}
fmt.Println(*use)
}
func queryMulti(DB *sql.DB, id int) {
use := new(Use)
rows, _ := DB.Query("select * from user where uid>?", id)
for rows.Next() {
err := rows.Scan(&use.uid, &use.username, &use.password, &use.salt)
if err != nil {
fmt.Println(err)
return
}
fmt.Print(*use)
}
}
func insertData(DB *sql.DB, use *Use) {
result, err := DB.Exec("insert into user(username,password,salt) values(?,?,?)", use.username, use.password, use.salt)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("reslut:", result)
lastInsertId, err := result.LastInsertId()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("lastInsertId:", lastInsertId)
rowsaffected, err := result.RowsAffected()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("rowsaffected:", rowsaffected)
}
func updateData(DB *sql.DB, use *Use) {
result, err := DB.Exec("update user set username = ? , password = ? where uid = ?", use.username, use.password, use.uid)
if err != nil {
fmt.Println(err)
}
lastInsertId, err := result.LastInsertId()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("lastInsertId:", lastInsertId)
rowsaffected, err := result.RowsAffected()
if err != nil {
fmt.Println(err)
}
fmt.Println("rowsaffected:", rowsaffected)
}
func deleteData(DB *sql.DB, id int) {
result, err := DB.Exec("delete from user where uid=?", id)
if err != nil {
fmt.Println(err)
return
}
lastInsertId, err := result.LastInsertId()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("lastInsertId:", lastInsertId)
rowsaffected, err := result.RowsAffected()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("rowsaffected:", rowsaffected)
}