zoukankan      html  css  js  c++  java
  • mysql

    1、mysql编程 

      a. 安装sqlx 

        go get github.com/jmoiron/sqlx 

      b. 链接mysql

        database, err := sqlx.Open("mysql", "root:@tcp(127.0.0.1:3306)/test")

    2、mysql相关操作

    insert操作
    r, err := Db.Exec("insert into person(username, sex, email)values(?, ?, ?)", "stu001", "man", "stu01@qq.com")
    
    Select 操作
    err := Db.Select(&person, "select user_id, username, sex, email from person where user_id=?", 1)
    
    update操作
    _, err := Db.Exec("update person set username=? where user_id=?", "stu0001", 1)
    
    Delete 操作
    _, err := Db.Exec("delete from person where user_id=?", 1)

    插入:

    import (
        "fmt"
        "time"
        _ "github.com/go-sql-driver/mysql" //mysql驱动实例注册,在init注册到go的接口里面去
        "github.com/jmoiron/sqlx"
        "math/rand"
    )
    
    type UserInfo struct {
        UserId   int    `db:"user_id"`
        Username string `db:"username"`
        Sex      string `db:"sex"`
        Email    string `db:"email"`
    }
    
    func main() {
        Db, err := sqlx.Open("mysql", "root:@tcp(10.0.0.200:3306)/godb")
        if err != nil {
            fmt.Println("connect to msyql failed, ", err)
            return
        }
    
        startTime := time.Now().UnixNano()
        
        fmt.Println("connect to mysql succ")    
        username := fmt.Sprintf("user%d", rand.Int63())
        email := fmt.Sprintf("%d@qq.com", rand.Int())
        sex := ""
        //插入数据
        result, err := Db.Exec("insert into user_info(username, sex, email)values(?,?,?)",
        username, sex, email)
        if err != nil {
            fmt.Println("insert failed, err:", err)
            return
        }
        user_id, _ := result.LastInsertId()    //返回插入的行的id
        fmt.Println("insert succ, user_id:", user_id)
        endTime := time.Now().UnixNano()
        fmt.Printf("insert succ cost:%d ms
    ", (endTime-startTime)/1000/1000)
        Db.Close()
    }
    View Code

    查询:

    package main
    
    import (
        "fmt"
        "time"
        _ "github.com/go-sql-driver/mysql" //mysql驱动实例注册,在init注册到go的接口里面去
        "github.com/jmoiron/sqlx"    
    )
    
    type UserInfo struct {
        UserId   int    `db:"user_id"`
        Username string `db:"username"`
        Sex      string `db:"sex"`
        Email    string `db:"email"`
    }
    
    func main() {
        Db, err := sqlx.Open("mysql", "root:@tcp(10.0.0.200:3306)/godb")
        if err != nil {
            fmt.Println("connect to msyql failed, ", err)
            return
        }
    
        startTime := time.Now().UnixNano()    
        var userInfo UserInfo
        //查询一条语句
        err = Db.Get(&userInfo, "select user_id, username, sex, email from user_info where username=?", "user1674879938132494608")
        if err != nil {
            fmt.Println("get failed, err:", err)
            return
        }
        fmt.Printf("userInfo:%#v
    ", userInfo)
        endTime := time.Now().UnixNano()
        fmt.Printf("insert succ cost:%d ms
    ", (endTime-startTime)/1000/1000)
        
        
        
        var userInfoList []*UserInfo
        //查询多条语句
        err = Db.Select(&userInfoList, "select user_id, username, sex, email from user_info where user_id>?", 2)
    
        fmt.Printf("user_info_list:%#v
    ", userInfoList)
        if err != nil {
            fmt.Println("select failed, err:", err)
            return
        }
        Db.Close()
    }
    View Code

    数据库的原子操作:

    package main
    
    import (
        "fmt"
        "time"
        _ "github.com/go-sql-driver/mysql"
        "github.com/jmoiron/sqlx"
        
    )
    
    type UserInfo struct {
        UserId   int    `db:"user_id"`
        Username string `db:"username"`
        Sex      string `db:"sex"`
        Email    string `db:"email"`
    }
    
    func main() {
        Db, err := sqlx.Open("mysql", "root:@tcp(10.0.0.200:3306)/godb")
        if err != nil {
            fmt.Println("connect to msyql failed, ", err)
            return
        }
    
        startTime := time.Now().UnixNano()
        conn, _ := Db.Begin() //原子操作
    
        _, err = conn.Exec("insert into user_info(username, sex, email)values(?,?,?)",
            "user01", "man", "email")
        if err != nil {
            conn.Rollback() //回滚
            fmt.Println("insert failed, err:", err)
            return
        }
    
        _, err = conn.Exec("insert into user_info(username, sex, email)values(?,?,?)",
            "user01", "man", "email")
        if err != nil {
            conn.Rollback() //回滚
            fmt.Println("insert failed, err:", err)
            return
        }
    
        conn.Commit()
        Db.Close()
    }
    View Code
  • 相关阅读:
    分层应用——怎样实现登录?
    浅谈UML的概念和模型之UML九种图
    C++ 顶层 const
    Cooley-Tukey算法 (蝶形算法)
    Android 4.4 Kitkat 使能 USB adb 功能
    Linux多线程编程小结
    排序算法汇总总结
    nodeJs基础
    MyBatis入门学习(一)
    IOC/DI的基本思想
  • 原文地址:https://www.cnblogs.com/domestique/p/8541512.html
Copyright © 2011-2022 走看看