zoukankan      html  css  js  c++  java
  • go——beego的数据库增删改查

          一直都不理解使用go语言的时候,为什么还要自己去装beego,以为使用go便可以解决所有的问题,结果在朋友的点拨下,才意识到:

          go与beego的关系就好比是nodejs与thinkjs的关系,因此也就不怎么存在疑问为什么还要继续安装beego来完成项目运行了,beego其实就是一个快速开发Go应用的http框架,go 语言方面技术大牛,可以用来快速开发API、Web、后端服务等各种应用,是一个RESTFul的框架。再次附上beego的官网(http://beego.me/docs/intro/)

           接着开始我们的数据库“增删改查”操作吧!

    1.golang本身没有提供连接MySQL的驱动,但是定义了标准接口供第三方开发驱动。这里连接mysql可以使用第三方库,第三方库推荐使用https://github.com/Go-SQL-Driver/MySQL这个驱动,更新维护都比较好;先要下载驱动,在cmd中执行

    go get github.com/go-sql-driver/mysql

     

    2.创建测试数据库(我们一直在用的Navicat,就用它做例子)

    CREATE DATABASE golang; 
    CREATE TABLE IF NOT EXISTS `golang`.`user` (
     `userid` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户编号',
     `username` VARCHAR(45) NOT NULL COMMENT '用户名称',
     `userage` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户年龄',
     `usersex` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户性别',
     PRIMARY KEY (`userid`))
     ENGINE = InnoDB
     AUTO_INCREMENT = 1
     DEFAULT CHARACTER SET = utf8
     COLLATE = utf8_general_ci
     COMMENT = '用户表'

     

    3.连接数据库:数据库连接使用datebase/sql Open函数进行连接

    db, err := sql.Open("mysql", "user:password@tcp(localhost:5555)/dbname?charset=utf8")
    其中连接参数可以有如下几种形式:
    user@unix(/path/to/socket)/dbname?charset=utf8
    user:password@tcp(localhost:5555)/dbname?charset=utf8
    user:password@/dbname
    user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname

    一般,大家都使用第二种。

     

    4.在liteIDE中写程序,完整代码如下:

    package main
    
    import (
        _ "crud/routers"
        "database/sql"
        "fmt"
    
        _ "github.com/go-sql-driver/mysql"
    )
    
    func main() {
        query()
    }
    
    //增加数据
    func insert() {
        db, err := sql.Open("mysql", "root:root@/golang?charset=utf8")
        checkErr(err)
    
        stmt, err := db.Prepare(`INSERT user (userid,username,userage,usersex) values (?,?,?,?)`)
        checkErr(err)
        res, err := stmt.Exec(1, "Mary", 20, 1)
        checkErr(err)
        id, err := res.LastInsertId()
        checkErr(err)
        fmt.Println(id)
    }
    
    //删除数据
    func remove() {
        db, err := sql.Open("mysql", "root:root@/golang?charset=utf8")
        checkErr(err)
    
        stmt, err := db.Prepare(`DELETE FROM user WHERE userid=?`)
        checkErr(err)
        res, err := stmt.Exec(1)
        checkErr(err)
        num, err := res.RowsAffected()
        checkErr(err)
        fmt.Println(num)
    }
    
    //更新数据
    func update() {
        db, err := sql.Open("mysql", "root:root@/golang?charset=utf8")
        checkErr(err)
    
        stmt, err := db.Prepare(`UPDATE user SET userage=?,usersex=? WHERE userid=?`)
        checkErr(err)
        res, err := stmt.Exec(21, 2, 2)
        checkErr(err)
        num, err := res.RowsAffected()
        checkErr(err)
        fmt.Println(num)
    }
    
    //查询数据
    func query() {
        db, err := sql.Open("mysql", "root:root@/golang?charset=utf8")
        checkErr(err)
    
        rows, err := db.Query("SELECT * FROM user")
        checkErr(err)
    
        //    //普通demo
        for rows.Next() {
            var userid int
            var username string
            var userage int
            var usersex int
    
            rows.Columns()
            err = rows.Scan(&userid, &username, &userage, &usersex)
            checkErr(err)
    
            fmt.Println(userid)
            fmt.Println(username)
            fmt.Println(userage)
            fmt.Println(usersex)
        }
    }
    func checkErr(err error) {
        if err != nil {
            panic(err)
        }
    
    }

    于是就在这个表里进行增删改查了……

    我并没有使用beego中的orm框架,是因为刚开始在看的时候忽略了orm。。。。。。。有点小疏忽,,,明天再研究。

  • 相关阅读:
    Linux文本检索命令grep笔记
    Python中字典的相关操作
    Go 语言函数闭包
    Go 语言多维数组
    Go 错误处理
    Go 语言接口
    Go 语言类型转换
    Go 语言递归函数
    Go 语言Map(集合)
    Go 语言范围(Range)
  • 原文地址:https://www.cnblogs.com/zhengyeye/p/5647837.html
Copyright © 2011-2022 走看看