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语句
- 你能用微信小程序打开小程序了【附开发方法】
- Logistic回归实战篇之预测病马死亡率(一)
- 腾讯游戏DBA利刃 - SQL审核工具介绍
- Logistic回归实战篇之预测病马死亡率(二)
- Windows环境下跑通Truffle开发环境
- Logistic回归实战篇之预测病马死亡率(三)
- 如何将finecms链接URL中的list和show去掉
- Solidity语法知识点(文末有彩蛋)
- 人脸Haar特征与快速计算神器:积分图
- 内存为王:DBIM RAC Share Nothing架构的挑战和解决方案
- 调用finecms栏目多图怎么实现
- phpcms调用子栏目名称/文章怎么操作
- 小程序开发工具全新上线 附下载地址和教程
- JS页面跳转代码怎么写?总结了5种方法
- 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 数组属性和方法
- leetcode之最长回文串
- Discourse CentOS 8 全新安装手册
- 3分钟短文:Laravel路子真野啊!路由昵称前缀中间件
- CSS中重要的BFC概念
- Redis哨兵集群中哨兵挂了,主从库还能切换吗?
- 你的 Redis 为什么变慢了?
- 解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?
- Python爬虫实现HTTP网络请求多种实现方式
- 在tensorflow以及keras安装目录查询操作(windows下)
- Python调用OpenCV实现图像平滑代码实例
- php微信公众号开发之音乐信息
- Laravel关联模型中过滤结果为空的结果集(has和with区别)
- php微信公众号开发之二级菜单
- django中的ajax组件教程详解
- php微信公众号开发之校园图书馆