Go操作MySQL数据库库
Go语言操作MySQL数据库
安装go操作MySQL的驱动
go get -u -v github.com/go-sql-driver/mysql
go操作MySQL数据库
导包
import _ "github.com/go-sql-driver/mysql"
程序在操作数据库的时候只需要用到database/sql,而不需要直接使用数据库驱动,所以程序在导入数据库驱动的时候将这个包的名字设置成下划线。
连接数据库,用sql.Open()方法,open()方法的第一个参数是驱动名称,第二个参数是连接字符串,格式为:用户名:密码@tcp(ip:port)/数据库名称?编码方式,返回值是连接对象和错误信息,例如:
conn,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/test?charset=utf8") defer conn.Close()//随手关闭数据库是个好习惯
执行数据库操作。
数据库的主要方法有:
Query 执行数据库的查询操作,例如一个Select语句,返回数据类型为*Rows
QueryRow 执行数据库至多返回一条数据,返回数据类型为*Row
Exec 执行数不返回任何rows的据库语句,例如delete操作
PrePare 准备一个数据库query操作,返回一个*Stmt,用于后续query或Exec。这个Stmt可以被多次执行,或者并发执行
创建表
exec函数如下:
func (db *DB) Exec(query string, args ...interface{}) (Result, error)
创建表的方法也是Exec(),参数是SQL语句,返回值是结果集和错误信息.
其中result包含的内容有:
type Result interface {LastInsertId() (int64, error)RowsAffected() (int64, error) }
RowsAffected() 函数,可以获得成功执行SQL后对数据库所影响的行数。
res ,err:= conn.Exec("create table user(name VARCHAR(40),pwd VARCHAR(40))") beego.Info("create table result=",res.,err)
增删改操作
执行增删改操作语句的是Exec(),参数是SQL语句,返回值是结果集和错误信息,通过对结果集的判断,得到执行结果的信息。以插入数据为例代码如下:
res,_:=stmt.Exec("insert user(name,pwd) values (?,?)","tony","tony") count,_:=res.RowsAffected() this.Ctx.WriteString(strconv.Itoa(int(count)))
查询操作
用的函数是Query()和QueryRow.
func (db *DB) QueryRow(query string, args ...interface{}) *Row func (db *DB) Query(query string, args ...interface{}) (*Rows, error)
利用QueryRow实现单行查询,能确定该SQL语句的查询结果为一条记录。将结果中的字段值使用Scan()函数依次提取。
利用Query实现多行数据查询,返回值为查询结果集和错误信息。通过next和Scan函数一起将数据取出来
代码如下:
单行查询:
row:= conn.QueryRow(`select * from user where userName = "wyj"`) var name,pwd string row.Scan(&name,&pwd) beego.Info(name,"------",pwd)
多行查询:
data ,err :=conn.Query("SELECT name from user")var userName stringif err == nil{for data.Next(){data.Scan(&userName)beego.Info(userName)}}
全部代码
//连接数据库 conn,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/testtest?charset=utf8")if err != nil{beego.Info("链接失败")}defer conn.Close() //建表res ,err:= conn.Exec("create table user(userName VARCHAR(40),passwd VARCHAR(40))")beego.Info("create table result=",res,err) //插入数据res,err =conn.Exec("insert user(userName,passwd) values(?,?)","itcast","heima")beego.Info(res,err) //单行查询row:= conn.QueryRow(`select * from user where userName = "wyj"`)var name,pwd stringrow.Scan(&name,&pwd)beego.Info(name,"------",pwd) //多行查询data ,err :=conn.Query("SELECT userName from user")var userName stringif err == nil{for data.Next(){data.Scan(&userName)beego.Error(userName)}}
Go操作MySQL数据库库相关推荐
- python mysql返回,python操作mysql数据-执行语句返回值直接返回字典类型
fetchall()将结果放在二维数组里面,每一行的结果在元组里面 import pymysql def export(table_name): conn =pymysql.connect(host ...
- python fetchall()转化为数据框_python 操作mysql数据中fetchone()和fetchall()方式
fetchone() 返回单个的元组,也就是一条记录(row),如果没有结果 则返回 None fetchall() 返回多个元组,即返回多个记录(rows),如果没有结果 则返回 () 需要注明:在 ...
- C语言操作mysql数据 常用函数
C语言操作mysql数据 常用函数 所需头文件: #include <mysql/mysql.h> 功能: 获得或初始化一个MYSQL结构 函数原型: MYSQL *mysql_ini ...
- php操作mysql数据_PHP - 操作MySQL数据库
第16章 PHP操作MySQL 学习要点: 1.PHP连接到MySQL 2.增删改查 3.其他常用函数 如果你已经具有了使用PHP.SQL和MySQL的丰富经验,现在就可以把所有这些技术组合在一起.P ...
- linux 操作mysql 数据库命令_Linux 操作数据库命令
一.连接数据库 格式: mysql -h主机地址 -u用户名 -p用户密码 mysql -hlocalhost -uroot -p123 注:-h,-u,-p 后面不加空格,进入数据库操作后每个命令结 ...
- linux 操作mysql 数据库命令_在Linux上用命令怎么连接数据库
展开全部 以常见的mysql和oracle这两种数据库为例: 一.连接mysql(mysql服务已开启) 1.mysql数据库安装32313133353236313431303231363533e58 ...
- 中国5级行政区域mysql数据库库_GitHub - liangyuquan/china_area_mysql: 中国5级行政区域mysql库...
china_area_mysql 中国5级行政区域mysql库 爬取国家统计局官网的行政区域数据,包括省市县镇村5个层级; 港澳地区的数据只有3级;台湾地区4级; 包含大陆地区的邮政编码和经纬度信息. ...
- 怎么生产mysql.scok_如何更改生产MySQL数据库库表的字符集
以前学习mysql的时候,实验的笔记,今天整理的时候看到了,所以记录下,备忘 1.导出表结构 mysqldump -uroot -predhat12345 -S /data/3306/mysql.so ...
- python中fetchall_python 操作mysql数据中fetchone()和fetchall()方式
fetchone() 返回单个的元组,也就是一条记录(row),如果没有结果 则返回 None fetchall() 返回多个元组,即返回多个记录(rows),如果没有结果 则返回 () 需要注明:在 ...
- mysql下载64位 西西,MYSQL下载v8.0.12.0 Windows版本-MySQL数据库库西西软件下载
PHP的最佳组合之一,MYSQL数据库,MSI Installer 5.6.11 170.6M MSI Installer 版. 只能在 windows 的系统下面安装. Windows (x86, ...
最新文章
- JQuery:JQuery 中的CSS()方法
- 数据项目总结:王者荣耀总决赛预测!
- openGL 坐标系的互相转换
- 困恼的mappedBy
- 002_html发展史
- 机器学习之 weka学习(四)
- php cdi_CDI中的事务异常处理
- BZip2Codec压缩、Map端压缩控制、Reduce端压缩控制……都在这份Hadoop整合压缩知识点里了!...
- php 获取子孙,jquery如何查找后代元素?jquery获取后代元素方法
- 怎样对流媒体进行压力测试_对node工程进行压力测试与性能分析「干货」
- 记录一举一动:PowerShell几行代码实现定期屏幕截屏
- UVA 12299 RMQ with Shifts 线段树
- 数据分析工具有哪些类型
- kubernetes Istio是什么
- SpringBoot操作Redis查看cmd乱码的问题
- Android 7.1 PackageInstaller(应用安装器)增加自动点击安装
- 天霆:桌面虚拟化正处于导入期
- Linux下qt程序部署到ARM开发板上: error: Upload of file “你的程序“ failed. The server said: “Failure
- 从周易六十四卦看软件架构真好懂!女朋友这下不用担心我的学习了【程序员编程】
- python爬虫学习14