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

go——beego的数据库增删改查的更多相关文章

  1. Yii2.0高级框架数据库增删改查的一些操作(转)

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  2. 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查

    一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...

  3. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

  4. Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  5. WindowsPhone8 数据库增删改查

    今天第一次在博客园发表文章,如果有的地方写的不对,还请大家指出! 1.这就是一个简单wp8数据库增删改查 1.创建数据表Person [Table] public class Person : INo ...

  6. MVC——数据库增删改查(Razor)——Html语法

    一.显示界面 .Models(模板) private MyDBDataContext _context = new MyDBDataContext(); public List<Info> ...

  7. MVC——数据库增删改查(Razor)

    一.显示信息 .Models(模板) private MyDBDataContext _context = new MyDBDataContext(); //定义一个变量取出所有数据 public L ...

  8. MVC——数据库增删改查(aspx)

    MVC: V(View) :视图→就是页面的模板 C(Control): 控制器→客户主要面对的就是控制器, M(Model):模板→在模板里面主要就是写关于数据库的各种增删改查的方法 它们之间的关系 ...

  9. Android(java)学习笔记193:利用谷歌API对数据库增删改查(推荐使用)

    接下来我们通过项目案例来介绍:这个利用谷歌API对数据库增删改查 1.首先项目图: 2.这里的布局文件activity_main.xml: <LinearLayout xmlns:android ...

随机推荐

  1. 7.mybatis一对多关联查询

    和第5节一对一查询类似,但是不同的是,一对一使用的是association,而一对多使用collection. 实例: 1个班级Class,对应1个老师Teacher,对应多个学生Student 1. ...

  2. JS——JavaScript Confirm

    function show_confirm(){var r=confirm("Press a button!");if (r==true) { alert("You pr ...

  3. DataGridView常用操作

    一.DataGridView列右击菜单事件处理 (1). 添加一个快捷菜单contextMenuStrip1:(2). 给dataGridView1的CellMouseDown事件添加处理程序: pr ...

  4. javascript权威指南笔记--javascript语言核心(三)

    1.var用来声明一个或多个变量.全局变量是全局对象的属性,它无法通过delete删除. 如果var语句中的变量没有指定初始化表达式,那么这个变量的初始值为undefined. 变量声明语句会被提前到 ...

  5. iOS - OC RunLoop 运行循环/消息循环

    1.RunLoop 1)运行循环: 运行循环在 iOS 开发中几乎不用,但是概念的理解却非常重要. 同一个方法中的代码一般都在同一个运行循环中执行,运行循环监听 UI 界面的修改事件,待本次运行循环结 ...

  6. [转载] 新浪微博MySQL优化的小结和反思

    原文: http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=206762682&idx=1&sn=1233ed1496d7 ...

  7. (转)使用Jmeter进行http接口测试

    前言: 本文主要针对http接口进行测试,使用Jmeter工具实现. Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对 ...

  8. 深入浅出RxJava(一:基础篇)

    RxJava正在Android开发者中变的越来越流行.唯一的问题就是上手不容易,尤其是大部分人之前都是使用命令式编程语言.但是一旦你弄明白了,你就会发现RxJava真是太棒了. 这里仅仅是帮助你了解R ...

  9. select动态增加option

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  10. 转:最小区间:k个有序的数组,找到最小区间使k个数组中每个数组至少有一个数在区间中

    转:http://www.itmian4.com/thread-6504-1-1.html 最小区间原题 k个有序的数组,找到最小的区间范围使得这k个数组中,每个数组至少有一个数字在这个区间范围内.比 ...