Go语言读写数据库
时间:2022-05-05
本文章向大家介绍Go语言读写数据库,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我用的驱动是:https://github.com/Go-SQL-Driver/MySQL
理由跟 https://github.com/astaxie/build-web-application-with-golang/blob/master/05.2.md 的一样。
- 比较新,更新维护的比较好;
- 完全支持database/sql接口
- 支持keepalive,保持长连接。
安装
$ go get github.com/go-sql-driver/mysql
数据库连接语句
import "database/sql"
import _ "github.com/go-sql-driver/mysql"
db, e := sql.Open("mysql", "user:password@/dbname?charset=utf8")
代码例子:来自 https://github.com/astaxie/build-web-application-with-golang/blob/master/05.2.md
使用的数据表:
CREATE TABLE `userinfo` ( `uid` int(10) NOT NULL AUTO_INCREMENT, `username` varchar(64) DEFAULT NULL, `departname` varchar(64) DEFAULT NULL, `created` date DEFAULT NULL, PRIMARY KEY (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
代码:
package main
import(
"database/sql"
"fmt"
_"github.com/go-sql-driver/mysql"
)
func main(){
db,err:=sql.Open("mysql","root:root@tcp(localhost:8889)/ghj1976test?charset=utf8")
checkErr(err)
//插入数据
stmt,err:=db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
checkErr(err)
res,err:=stmt.Exec("ghj1976","RD部门","2013-03-18")
checkErr(err)
res,err=stmt.Exec("astaxie","RD部门","2012-12-09")
checkErr(err)
id,err:=res.LastInsertId()
checkErr(err)
fmt.Println(id)
//修改数据
stmt,err=db.Prepare("update user info set username=? where uid=?")
checkErr(err)
res,err=stmt.Exec("astaxieupdate",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 uid int
var username string
var department string
var created string
err=rows.Scan(&uid,&username,&department,&created)
checkErr(err)
fmt.Println(uid)
fmt.Println(username)
fmt.Println(department)
fmt.Println(created)
}
//删除数据
stmt,err=db.Prepare("delete from user info where uid=?")
checkErr(err)
res,err=stmt.Exec(id)
checkErr(err)
affect,err=res.RowsAffected()
checkErr(err)
fmt.Println(affect)
db.Close()
}
func checkErr(err error){
if err!=nil{
panic(err)
}
}
db.Prepare()函数用来返回准备要执行的sql操作,然后返回准备完毕的执行状态。 db.Query()函数用来直接执行Sql返回Rows结果。 stmt.Exec()函数用来执行stmt准备好的SQL语句
- 专门攻击工资支付系统的网络犯罪
- Angularjs基础(五)
- DW Replace Open Sans:将WordPress 后台中的open-sans字体加载源从Google Fonts换为360 CDN
- Google Fonts 已可正常访问,相关插件可卸
- 微信支付宝完成这几个设置,别人偷不走你一毛钱!
- Angularjs基础(四)
- Google Fonts导致WordPress 速度问题的三个解决方案
- DW Replace Open Sans:将WordPress 后台中的open-sans字体加载源从Google Fonts换为360 CDN
- Angularjs基础(三)
- 低多边形(Low-Poly)简介及相关素材分享下载
- 开发者的福音:GenerateWP 自动生成WordPress 开发相关代码
- 自定义WordPress 密码文章提示文字
- 解决WordPress文章密码保护在首页(摘要)不起作用
- WordPress 3.9+的 TinyMCE 4 编辑器增强开发
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 聊聊dubbo-go的roundRobinLoadBalance
- 腾讯云录音文件识别请求和结果查询
- 【Kubernetes】kubectl top 如何使用
- js数组方法,常用数组Api的基本使用
- java jsp实现网络考试系统(mysql)
- 实操:数据万象语音转文字
- python智能图片识别系统(图片切割、图片识别、区别标识)
- 【Kubernetes】部署 metrics-server 后无法使用 top 命令
- 使用java计算数组方差和标准差
- jzy3D从入门到弃坑_2 使用jzy3D0.9画2D散点图
- jzy3D从入门到弃坑_3 使用jzy3D0.9画2D散点图--多条线条
- maven安装和应用
- 论文研读-多目标自适应memetic算法
- 一起来学matlab-matlab学习笔记13函数 13_1 函数返回值
- 一起来学matlab-matlab学习笔记13函数 13_2 匿名函数