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()//随手关闭数据库是个好习惯
      
    • 执行数据库操作。

      数据库的主要方法有:

      1. Query 执行数据库的查询操作,例如一个Select语句,返回数据类型为*Rows

      2. QueryRow 执行数据库至多返回一条数据,返回数据类型为*Row

      3. Exec 执行数不返回任何rows的据库语句,例如delete操作

      4. 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数据库库相关推荐

  1. python mysql返回,python操作mysql数据-执行语句返回值直接返回字典类型

    fetchall()将结果放在二维数组里面,每一行的结果在元组里面 import pymysql def export(table_name): conn =pymysql.connect(host ...

  2. python fetchall()转化为数据框_python 操作mysql数据中fetchone()和fetchall()方式

    fetchone() 返回单个的元组,也就是一条记录(row),如果没有结果 则返回 None fetchall() 返回多个元组,即返回多个记录(rows),如果没有结果 则返回 () 需要注明:在 ...

  3. C语言操作mysql数据 常用函数

    C语言操作mysql数据 常用函数 所需头文件: #include <mysql/mysql.h> 功能:   获得或初始化一个MYSQL结构 函数原型: MYSQL *mysql_ini ...

  4. php操作mysql数据_PHP - 操作MySQL数据库

    第16章 PHP操作MySQL 学习要点: 1.PHP连接到MySQL 2.增删改查 3.其他常用函数 如果你已经具有了使用PHP.SQL和MySQL的丰富经验,现在就可以把所有这些技术组合在一起.P ...

  5. linux 操作mysql 数据库命令_Linux 操作数据库命令

    一.连接数据库 格式: mysql -h主机地址 -u用户名 -p用户密码 mysql -hlocalhost -uroot -p123 注:-h,-u,-p 后面不加空格,进入数据库操作后每个命令结 ...

  6. linux 操作mysql 数据库命令_在Linux上用命令怎么连接数据库

    展开全部 以常见的mysql和oracle这两种数据库为例: 一.连接mysql(mysql服务已开启) 1.mysql数据库安装32313133353236313431303231363533e58 ...

  7. 中国5级行政区域mysql数据库库_GitHub - liangyuquan/china_area_mysql: 中国5级行政区域mysql库...

    china_area_mysql 中国5级行政区域mysql库 爬取国家统计局官网的行政区域数据,包括省市县镇村5个层级; 港澳地区的数据只有3级;台湾地区4级; 包含大陆地区的邮政编码和经纬度信息. ...

  8. 怎么生产mysql.scok_如何更改生产MySQL数据库库表的字符集

    以前学习mysql的时候,实验的笔记,今天整理的时候看到了,所以记录下,备忘 1.导出表结构 mysqldump -uroot -predhat12345 -S /data/3306/mysql.so ...

  9. python中fetchall_python 操作mysql数据中fetchone()和fetchall()方式

    fetchone() 返回单个的元组,也就是一条记录(row),如果没有结果 则返回 None fetchall() 返回多个元组,即返回多个记录(rows),如果没有结果 则返回 () 需要注明:在 ...

  10. mysql下载64位 西西,MYSQL下载v8.0.12.0 Windows版本-MySQL数据库库西西软件下载

    PHP的最佳组合之一,MYSQL数据库,MSI Installer 5.6.11 170.6M MSI Installer 版. 只能在 windows 的系统下面安装. Windows (x86, ...

最新文章

  1. JQuery:JQuery 中的CSS()方法
  2. 数据项目总结:王者荣耀总决赛预测!
  3. openGL 坐标系的互相转换
  4. 困恼的mappedBy
  5. 002_html发展史
  6. 机器学习之 weka学习(四)
  7. php cdi_CDI中的事务异常处理
  8. BZip2Codec压缩、Map端压缩控制、Reduce端压缩控制……都在这份Hadoop整合压缩知识点里了!...
  9. php 获取子孙,jquery如何查找后代元素?jquery获取后代元素方法
  10. 怎样对流媒体进行压力测试_对node工程进行压力测试与性能分析「干货」
  11. 记录一举一动:PowerShell几行代码实现定期屏幕截屏
  12. UVA 12299 RMQ with Shifts 线段树
  13. 数据分析工具有哪些类型
  14. kubernetes Istio是什么
  15. SpringBoot操作Redis查看cmd乱码的问题
  16. Android 7.1 PackageInstaller(应用安装器)增加自动点击安装
  17. 天霆:桌面虚拟化正处于导入期
  18. Linux下qt程序部署到ARM开发板上: error: Upload of file “你的程序“ failed. The server said: “Failure
  19. 从周易六十四卦看软件架构真好懂!女朋友这下不用担心我的学习了【程序员编程】
  20. python爬虫学习14

热门文章

  1. openGL之API学习(七十八)SPIR-V
  2. 64位处理器与32位处理器的区别
  3. appcan 开发步骤
  4. mysql 5.5.27_MySQL-5.5.27安装图解
  5. Elasticsearch1.x 拼音分词实现全拼首字母中文混合搜索
  6. 网站漏洞修补之苹果cms建站系统
  7. Windows批处理bat文件
  8. 天翼云服务器ubuntu20.04安装Mysql记录
  9. 安兔兔:2018年8月iOS设备性能排行榜
  10. 201771010112罗松《面向对象程序设计(java)》第十七周学习总结