golang mysql int64_golang的mysql基本操作

package main

import (

"database/sql"

"fmt"

//"log"

"strconv"

"sync"

_ "github.com/go-sql-driver/mysql"

)

var (

dbConn *sql.DB

err error

)

type SimpleSession struct {

Username string

TTL int64

}

func dbInit() {

dbConn, err = sql.Open("mysql", "root:root@/video_server?charset=utf8") // "mysql","账号","密码"@数据库名称?charset=字符编码

if err != nil {

panic(err.Error())

}

}

func InserSession(sid string, ttl int64, uname string) error {

ttlstr := strconv.FormatInt(ttl, 10) // 将int类型按10进制转化为string

stmtIns, err := dbConn.Prepare("INSERT INTO sessions (session_id, TTL, login_name) VALUES (?, ?, ?)")

if err != nil {

return err

}

_, err = stmtIns.Exec(sid, ttlstr, uname)

if err != nil {

return err

}

defer stmtIns.Close()

return nil

}

func DeleteSession(sid string) error {

stmtOut, err := dbConn.Prepare("DELETE FROM sessions WHERE session_id = ?")

if err != nil {

return err

}

if _, err := stmtOut.Query(sid); err != nil {

return err

}

return nil

}

func UpdateSession(sid string, ttl int64) error {

stmtOut, err := dbConn.Prepare("UPDATE sessions SET TTL = ? WHERE session_id = ?")

if err != nil {

return err

}

if _, err := stmtOut.Query(ttl, sid); err != nil {

return err

}

return nil

}

func SelectOne(sid string) (*SimpleSession, error) {

ss := &SimpleSession{}

stmtOut, err := dbConn.Prepare("SELECT TTL, login_name FROM sessions WHERE session_id=?")

if err != nil {

return nil, err

}

var ttl string

var uname string

stmtOut.QueryRow(sid).Scan(&ttl, &uname)

if err != nil && err != sql.ErrNoRows {

return nil, err

}

//将string转为int64

if res, err := strconv.ParseInt(ttl, 10, 64); err == nil {

ss.TTL = res

ss.Username = uname

} else {

return nil, err

}

defer stmtOut.Close()

return ss, nil

}

func SelectAll() (*sync.Map, error) {

m := &sync.Map{}

stmtOut, err := dbConn.Prepare("SELECT * FROM sessions")

if err != nil {

return nil, err

}

rows, err := stmtOut.Query()

if err != nil {

return nil, err

}

for rows.Next() {

var id string

var ttlstr string

var login_name string

if er := rows.Scan(&id, &ttlstr, &login_name); er != nil {

//log.Printf("retrive sessions error: %s", er)

break

}

//出一组数据就打包好往map里运

if ttl, err1 := strconv.ParseInt(ttlstr, 10, 64); err1 == nil {

ss := &SimpleSession{Username: login_name, TTL: ttl}

m.Store(id, ss)

//log.Printf(" session id: %s, ttl: %d", id, ss.TTL)

}

}

return m, nil

}

// 新增数据

func InsertData() {

err := InserSession("8bed7b4f-d201-4ca1-a816-8adce84a9164", 1598602333474, "xiaoming")

if err != nil {

fmt.Println(err)

}

}

// 删除数据

func DeleteData() {

err := DeleteSession("8bed7b4f-d201-4ca1-a816-8adce84a9164")

if err != nil {

fmt.Println(err)

}

}

// 修改数据

func UpdateData() {

err := UpdateSession("8bed7b4f-d201-4ca1-a816-8adce84a9164", 1598602333475)

if err != nil {

fmt.Println(err)

}

}

// 查询一条数据

func SelectDataOne() {

ss, err := SelectOne("8bed7b4f-d201-4ca1-a816-8adce84a9163")

if err != nil {

fmt.Println(err)

} else {

fmt.Println(ss) // your code

}

}

// 查询多条数据

func SelectDataAll() {

ss, err := SelectAll()

if err != nil {

fmt.Println(err)

} else {

fmt.Println(ss) // your code

}

}

func main() {

// 连接数据库

dbInit()

// 增

//InsertData()

// 删

//DeleteData()

// 改

//UpdateData()

// 查 一条数据

//SelectDataOne()

// 查 多条数据

SelectDataAll()

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值