博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go学习笔记-使用MySQL数据库
阅读量:6992 次
发布时间:2019-06-27

本文共 1770 字,大约阅读时间需要 5 分钟。

2017-12-28 15:17:31 

 

Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常 用的有如下几种:

 

  1. https://github.com/Go-SQL-Driver/MySQL 支持database/sql,全部采用go写。
  2. https://github.com/ziutek/mymysql 支持database/sql,也支持自定义的接口,全部采用go写。
  3. https://github.com/Philio/GoMySQL 不支持database/sql,自定义接口,全部采用go写。

 

接下来的例子主要以第一个驱动为例,也推荐大家采用它,主要理由:这个驱动比较新,维护的比较好,完全支持database/sql接口 支持keepalive,保持长连接。

 

package mainimport (	"database/sql"	"fmt"	_ "github.com/Go-SQL-Driver/MySQL"	"os")func checkErr(err error) {	if err != nil {		fmt.Println("Error is ", err)		os.Exit(-1)	}}// sql.Open()函数用于打开数据库驱动,Go-SQL-Driver中注册了mysql这个数据库驱动,第二个参数是DNS,配置数据库信息// db.Prepare()函数用来返回准备要执行的sql操作,返回准备完毕状态// db.Query() 函数用来直接执行Sql返回Rows结果// stmt.Exec() 函数用来执行stmt准备好的SQLfunc main() {	// sql.Open("mysql", "用户名:密码@tcp(IP:端口)/数据库?charset=utf8")	db, err := sql.Open("mysql", "root:xxxxx@tcp(xxxxxxxx:3306)/test?charset=utf8")	checkErr(err)	fmt.Println("链接数据库test")	//插入	stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")	checkErr(err)	res, err := stmt.Exec("XXXXX", "Gopher", "2012-12-09")	checkErr(err)	id, err := res.LastInsertId()	checkErr(err)	fmt.Println(id)	//更新数据	stmt, err := db.Prepare("update userinfo set username=? ,departname=? where id=?")	checkErr(err)	res, err := stmt.Exec("testusername", "testdepartname", id)	checkErr(err)	affect, err := res.RowsAffected()	checkErr(err)	fmt.Println(affect)	//查询数据	rows, err := db.Query("select * from userinfo")	checkErr(err)	for rows.Next() {		var id int		var username string		var departname string		var created string		err = rows.Scan(&id, &username, &departname, &created)		checkErr(err)		fmt.Println(id)		fmt.Println(username)		fmt.Println(departname)		fmt.Println(created)	}}

  

转载于:https://www.cnblogs.com/lizhipengvvip/p/8135901.html

你可能感兴趣的文章
Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明
查看>>
SQL Server2008 删除登录记录
查看>>
js数字验证
查看>>
Nginx 配置指令的执行顺序(九)
查看>>
【百度地图API】如何激发手机的高分辨率
查看>>
DIV+CSS专题:十天学会DIV+CSS
查看>>
2015第5周日
查看>>
输入法之模型剪枝一(基于熵的剪枝)
查看>>
《全体育·瑜伽》
查看>>
UML中类图的符号解释
查看>>
HDU 4421 Bit Magic (图论-2SAT)
查看>>
[LeetCode]Add Binary
查看>>
HDU 5112 A Curious Matt 水题
查看>>
Activity具体解释(生命周期、以各种方式启动Activity、状态保存,全然退出等)...
查看>>
[LeetCode] Permutation Sequence 序列排序
查看>>
MyBatis3: Could not find SQL statement to include with refid ‘
查看>>
scala spray 概念性内容的总结
查看>>
Spring中配置数据源的4种形式(转)
查看>>
分享9款极具创意的HTML5/CSS3进度条动画
查看>>
Windows 之 CMD命令
查看>>