zoukankan      html  css  js  c++  java
  • 使用Go语言操作MySQL数据库的思路与步骤

    最近在做注册登录服务时,学习用Go语言操作MySQL数据库实现用户数据的增删改查,现将个人学习心得总结如下,另外附有代码仓库地址,欢迎各位有兴趣的fork。

    软件环境:Goland、Navicat for MySQL。

    一、实现思路

    1,我的总体设计思路是先写出连接数据库和关闭数据库的逻辑,再建立四个分支,根据用户的选择分别进入增删改查的操作;

    1
    2
    3
    4
    5
    func DBstart() {
        db,_= sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/dbtest?charset=utf8") //dbtest为我新建立的数据库名
     
        fmt.Println("mysql start succcessed !")
    }
    1
    2
    3
    4
    5
    func DBclose(){
        //关闭数据库
        db.Close()
        fmt.Println("database closed")
    }

      

    2,增加的操作

    输入对应的数据

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    fmt.Println("请输入用户ID:")
    fmt.Scan(&Userid)
    fmt.Println("请输入名字:")
    fmt.Scan(&Username)
    fmt.Println("请输入部门:")
    fmt.Scan(&Departname)
    fmt.Println("请输入进部门时间")
    fmt.Scan(&Created)
     
     
    //插入数据
    stmt,err := db.Prepare("INSERT userif SET userid=?,username=?,departname=?,created=?")
    CheckErr(err)
     
    res,err := stmt.Exec(Userid,Username,Departname,Created)
    CheckErr(err)
     
    id,err := res.LastInsertId()
     
    fmt.Println(id)

      

    3,查询的操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        rows,err := db.Query("SELECT * FROM userif")
        CheckErr(err)
     
        for rows.Next(){
            err = rows.Scan(&Id,&Userid,&Created,&Departname,&Username)
            CheckErr(err)
            fmt.Println(Userid)
            fmt.Println(Username)
            fmt.Println(Departname)
            fmt.Println(Created)
    }

      

    4,更新的操作

    根据提示输入要更新的内容,然后转到对应的更新语句

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        fmt.Println("请输入要查询的用户ID:")
        fmt.Scan(&Userid)
        fmt.Println("请输入要更新的内容:a-名字;b-部门;c-进部门的时间:")
        var s string
        fmt.Scan(&s)
        switch s {
        case "a":
            fmt.Println("请输入要更改用户ID为%d的名字",Userid)
            fmt.Scan(&Username)
            fmt.Println(Username)
            fmt.Println(Userid)
            stmt,err := db.Prepare("UPDATE userif SET username=? where userid=?")
            CheckErr(err)
                    ......//以此类推
    }

      

    5,删除的操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    fmt.Println("请输入要删除的用户ID:")
    fmt.Scan(&Userid)
    stmt,err := db.Prepare("DELETE from userif where userid=?")
    CheckErr(err)
     
    res,err := stmt.Exec(Userid)
    CheckErr(err)
     
    affect,err := res.RowsAffected()
    CheckErr(err)
     
    fmt.Println(affect)

    二、注意点

    1,在查找操作中注意输入与输出对应的列名是否与MySQL数据中的一致,不然可能会造成如下错误

    三、参考资料

    go-sql-driver

  • 相关阅读:
    HDU 4565 So Easy!(数学+矩阵快速幂)(2013 ACM-ICPC长沙赛区全国邀请赛)
    HDU 4568 Hunter(最短路径+DP)(2013 ACM-ICPC长沙赛区全国邀请赛)
    URAL 1664 Pipeline Transportation(平面图最大流)
    HDU 1250 Hat's Fibonacci(高精度)
    HDU 1042 N!(高精度乘)
    算法模板の计算几何
    算法模板の数据结构
    算法模板の数学&数论
    算法模板之图论
    HDU 3260/POJ 3827 Facer is learning to swim(DP+搜索)(2009 Asia Ningbo Regional)
  • 原文地址:https://www.cnblogs.com/treasure716/p/9668604.html
Copyright © 2011-2022 走看看