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语句
- crontab执行python脚本提示ImportError解决方法
- Java学习之约瑟夫环的两中处理方法
- Zabbix实现QQ报警配置
- 限制用户使用su切换身份
- 微信小程序优秀开发资源汇总
- 编译安装openresty
- hdu 3367(Pseudoforest ) (最大生成树)
- chattr命令
- hdu 1561 The more, The Better (树上背包)
- hdu 1829 A Bug's Life(分组并查集(偏移量))
- 前端游戏编程基础-如何实现Canvas图像的拖拽、点击等操作
- hdu 4081 Qin Shi Huang's National Road System (次小生成树)
- python读取系统信息
- hdu 3948 Portal (kusral+离线)
- 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 数组属性和方法
- Linux系统SSH(Secure Shell Protocol)服务
- 全网最火Java面试题
- Redis数据备份,容灾恢复手段
- Sublime Text的使用
- JVM垃圾回收机制和算法详解
- 使用 zabbix 监控 tomcat(包含jvm监控)
- Python open 读和写
- Linux系统SSH服务之 sshkey密钥认证实战
- Redis工作中常用命令,看这一篇就够了
- String、StringBuffer、StringBuiler深入分析,看这一篇就够了
- Windows安装pip方法
- 通过jvm字节码研究Synchronized
- 学synchronized锁升级过程,吊打面试官
- jvm启动加载类的全过程,全网最全一篇,告诉你什么是双亲委派机制
- sonar+Jenkins 构建代码质量自动化分析平台