一、安装mysql-driver驱动

go get github.com/go-sql-driver/mysql

二、安装完毕之后,就可以通过go语言操作mysql了

const (
_selectUser = "select name,age from user where id = ?"
_updateUser = "update user set name = ? where name = ?"
_insertUser = "insert user (name,age) values (?,?)"
_deleteUser = "delete user where id = ?"
) func main () {
var (
err error
)
// 得到一个db对象
// Open方法第二个参数: 用户名:密码@协议(ip:端口)/数据库
db,err := sql.Open("mysql","root:root@tcp(127.0.0.1:3306)/day0731")
if err != nil {
fmt.Println(err)
return
}
defer db.Close() // 这里我们拿到了db这个对象,就可以对day0731这个mysql数据库进行操作了
// 查询操作
// Query方法,返回值具体类型自己看
var (
name string
age int
)
resultRows,err := db.Query(_selectUser,1)
// 这里的name,age必须和sql语句顺序一致,也不能多传,也不能少传
err = resultRows.Scan(&name,&age)
if err != nil {
fmt.Println(err)
retrun
}
fmt.Println(name)
fmt.Println(age) // QueryRow方法,查询的效果和上面一致
err = db.QueryRow(_selectUser,1).Scan(&name,&age)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(name)
fmt.Println(age) // 插入、更新、删除操作
// Exec方法,执行一段sql语句
result,err := db.Exec(_updateUser,"朱春雨","朱宇")
if err != nil {
fmt.Println(err)
return
}
// result这个对象,他有两个方法,RowsAffected(),LastInsertId(),
// 分别返回影响的行数,还有就是最后插入的id
// 我们这里执行的是更新语句,就看这个方法就好了RowsAffected
rowCount,err := result.RowsAffected()
if err != nil {
fmt.Println(err)
return
}
if rowCount == 0 {
fmt.Println("更新操作失败")
return
}
fmt.Println("更新操作成功!") }

三、对mysql的增删查改用Query,Exec方法就ok了,具体其他的方法参考go语言的官方文档

Golang-使用mysql的更多相关文章

  1. [转帖]golang操作mysql使用总结

    golang操作mysql使用总结 https://www.cnblogs.com/hanyouchun/ 讲解的很详细~ 前言 Golang 提供了database/sql包用于对SQL数据库的访问 ...

  2. golang 的 mysql 操作

    goLang的mysql操作,大致可分为三个步骤: 1.下载mysql驱动:go get github.com/go-sql-driver/mysql 2.建立连接:sql.Open("my ...

  3. golang操作mysql数据库

    golang操作mysql数据库 代码: mysql的增.删.改.查 package main import ( "database/sql" "fmt" &q ...

  4. Golang操作MySQL的正确姿势

    封装原因: 查看了很多网上提供的ORM类型的数据库操作,觉得比较麻烦,需要提前配置很多的表结构体,然后才能使用,对于数据表很多的项目就配置起来就比较麻烦,所以对golang的mysql包进行了外层包装 ...

  5. 使用golang理解mysql的两阶段提交

    使用golang理解mysql的两阶段提交 文章源于一个问题:如果我们现在有两个mysql实例,在我们要尽量简单地完成分布式事务,怎么处理? 场景重现 比如我们现在有两个数据库,mysql3306和m ...

  6. golang操作mysql使用总结

    前言 Golang 提供了database/sql包用于对SQL数据库的访问, 作为操作数据库的入口对象sql.DB, 主要为我们提供了两个重要的功能: sql.DB 通过数据库驱动为我们提供管理底层 ...

  7. Mysql学习(一)添加一个新的用户并用golang操作Mysql

    Mysql添加一个新的用户并赋予权限 添加一个自己的用户到mysql 首先我们需要先用root用户登录mysql,但是刚安装完没有密码,我们先跳过密码 ailumiyana@ailumiyana:~/ ...

  8. golang实现mysql数据库备份

    背景 navicat是mysql可视化工具中最棒的,但是,在处理视图的导入导出方面,它是按照视图名称的字母顺序来处理的,若视图存在依赖,在导入过程中就会报错.前面已经用python写了一个,但在使用过 ...

  9. 使用golang插入mysql性能提升经验

    前言 golang可以轻易制造高并发,在某些场景很合适,比如爬虫的时候可以爬的更加高效.但是对应某些场景,如文件读写,数据库访问等IO为瓶颈的场合,就没有什么优势了. 前提基础 1.golang数据库 ...

  10. [Go] golang实现mysql连接池

    golang中连接mysql数据库,需要使用一个第三方类库github.com/go-sql-driver/mysql,在这个类库中就实现了mysql的连接池,并且只需要设置两个参数就可以实现 一般连 ...

随机推荐

  1. 云上的三台主机构建server-proxy-agent取不到数据

    4252:20191126:172327.217 cannot send list of active checks to "xxx.190.39.152": host [ppp] ...

  2. Golang 接口

    1 接口是什么 Golang中没有像Python.Java拥有类和对象的概念,其封装对象或说明对象是通过接口来实现的.比如谁能够实现什么样的功能,便能够将其抽象化封装. 接口定义了一组方法(抽象方法集 ...

  3. 思科、华为、H3C常用命令对比大全

    思科.华为.H3C这些网络设备的命令还是挺多的,不过我们一般用的路由交换机设备都是最简单的了,先学基本命令,再学其他功能命令.路由命令是最基本的命令了. 思科.华为.H3C常用命令对比大全    CI ...

  4. Incorrect string value: '获取...' for column 'result' at row 1

    错误详情信息: ### Error updating database. Cause: java.sql.SQLException: Incorrect ### The error may invol ...

  5. UnityVR案例 - VR僵尸大战(HTC VIVE)

    使用HTCvive设备开发的一款射击类游戏(Unity5.6.3),玩家在游戏中使用手枪.手榴弹或者技能杀死僵尸. 亮点功能:手势识别,语音唤醒(关键词识别) 手势识别:玩家使用手柄在游戏中绘制事先录 ...

  6. CRM 负责人 选择

    CRM 负责人 参与 - 搜狗搜索https://www.sogou.com/sgo?query=CRM+%E8%B4%9F%E8%B4%A3%E4%BA%BA+%E5%8F%82%E4%B8%8E& ...

  7. mybatis如何接受map类型的参数

    Mybatis传入参数类型为Map   mybatis更新sql语句: ? 1 2 3 4 5 6 7 8 9 <update id="publishT00_notice" ...

  8. 卷积神经网络概念及使用 PyTorch 简单实现

    卷积神经网络 卷积神经网络(CNN)是深度学习的代表算法之一 .具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此也被称为“平移不变人工神经网络”.随着深度学习理论的提出和数值计算设备 ...

  9. Deploy a plain HTTP registry

    当docker pull a.b.com/ubuntu:14.04的时候,如果提示:“Docker x509 insecure registry”之类的,说这个registry不安全的,如果就是想在a ...

  10. Vue打包发布到Tomcat后,刷新报错404解决方法

    在应用下面加 WEB-INF 建 web.xml 内容如下 <?xml version="1.0" encoding="ISO-8859-1"?> ...