一直都不理解使用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。。。。。。。有点小疏忽,,,明天再研究。