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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用beego操作mysql数据库实现增删的示例代码: ```go package controllers import ( "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" ) type UserController struct { beego.Controller } type User struct { Id int Name string Age int } func init() { orm.RegisterDriver("mysql", orm.DRMySQL) orm.RegisterDataBase("default", "mysql", "root:password@tcp(127.0.0.1:3306)/test?charset=utf8") orm.RegisterModel(new(User)) orm.RunSyncdb("default", false, true) } func (c *UserController) AddUser() { o := orm.NewOrm() user := User{Name: "Tom", Age: 20} id, err := o.Insert(&user) if err == nil { c.Ctx.WriteString("Insert user success, id: " + string(id)) } else { c.Ctx.WriteString("Insert user failed, err: " + err.Error()) } } func (c *UserController) GetUser() { o := orm.NewOrm() user := User{Id: 1} err := o.Read(&user) if err == nil { c.Ctx.WriteString("Get user success, name: " + user.Name + ", age: " + string(user.Age)) } else { c.Ctx.WriteString("Get user failed, err: " + err.Error()) } } func (c *UserController) UpdateUser() { o := orm.NewOrm() user := User{Id: 1} if o.Read(&user) == nil { user.Age = 22 if num, err := o.Update(&user); err == nil { c.Ctx.WriteString("Update user success, num: " + string(num)) } else { c.Ctx.WriteString("Update user failed, err: " + err.Error()) } } } func (c *UserController) DeleteUser() { o := orm.NewOrm() user := User{Id: 1} if num, err := o.Delete(&user); err == nil { c.Ctx.WriteString("Delete user success, num: " + string(num)) } else { c.Ctx.WriteString("Delete user failed, err: " + err.Error()) } } ``` 这段代码演示了如何使用beego的ORM模块连接mysql数据库,并实现增删操作。其中,init函数用于注册数据库驱动和连接数据库;AddUser函数用于新增用户;GetUser函数用于询用户;UpdateUser函数用于更新用户;DeleteUser函数用于删除用户。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值