go——beego的数据库增删改查

      一直都不理解使用go语言的时候,为何还要本身去装beego,觉得使用go即可以解决全部的问题,结果在朋友的点拨下,才意识到:node

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

       接着开始咱们的数据库“增删改查”操做吧!git

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

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

 

2.建立测试数据库(咱们一直在用的Navicat,就用它作例子)golang

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函数进行链接sql

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。。。。。。。有点小疏忽,,,明天再研究。socket

相关文章
相关标签/搜索