1. 安装mysql驱动库和sqlx基于官方sql库的扩展库

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

  

2.  链接mysql

package main

import (
"fmt"
_ "github.com/go-sql-driver/mysql" // 初始化mysql驱动
"github.com/jmoiron/sqlx" // sqlx是一个库,为go标准库database/sql提供了一组扩展
) var db *sqlx.DB func init() {
// 初始化
database, err := sql.Open("mysql", "username:password@protocal(host:port)/db_name")
if err != nil {
fmt.Println("open mysql field", err)
return
} db = database
}

  

3.  insert

func main() {
defer db.Close() result, err := db.Exec("insert into person(username, sex, email)values(?,?,?)", "abc", "男", "myn_cn@163.com")
if err != nil {
fmt.Println("Exec failed", err)
return
} lastId, err := result.LastInsertId()
if err != nil {
fmt.Println("exec failed", err)
return
} fmt.Println("insert success", lastId) }

  

4.  select

type Person struct {
Userid int `db:"user_id"`
Username string `db:"username"`
Sex string `db:"sex"`
Email string `db:"email"`
} func main() {
defer db.Close() var person []Person
if err := db.Select(&person, "select user_id, username, sex, email from person where user_id = ?;", 2); err != nil {
fmt.Println("select failed", err)
return
} fmt.Println("select success", person) }

  

5.  update

func main() {
result, err := db.Exec("update person set username = ? where user_id = ?", "嘿嘿2", 2)
if err != nil {
fmt.Println("exec failed", err)
return
} rows, err := result.RowsAffected()
if err != nil {
fmt.Println("exec failed", err)
} fmt.Println("update success", rows) }

  

6. delete

func main() {
result, err := db.Exec("delete from person where user_id = ?", 2)
if err != nil {
fmt.Println("exec failed", err)
return
} rows, err := result.RowsAffected()
if err != nil {
fmt.Println("exec failed", err)
} fmt.Println("delete success", rows) }

  

7.  mysql事务

func main() {
conn, err := db.Begin() // 开启事务 if err != nil {
fmt.Println("begin err", err)
return
} result, err := conn.Exec("insert into person(username, sex, email)values(?,?,?)", "张三", "女", "1341935532@qq.com")
if err != nil {
fmt.Println("exec failed", err)
conn.Rollback() // 回滚事务
return
} rows, err := result.RowsAffected()
if err != nil {
fmt.Println("exec failed", err)
conn.Rollback() // 回滚事务
return
} conn.Commit() // 提交事务
fmt.Println("delete success", rows) }

  

golang操作mysql的更多相关文章

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

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

  2. golang操作mysql数据库

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

  3. golang操作mysql使用总结

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

  4. Golang操作MySQL的正确姿势

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

  5. Golang 操作mysql使用举例---连接本地数据库

    连接数据库的方式有两种:TCP和Unix域socket. 本文使用Unix domain sockets连接数据库.关于TCP连接数据库可以参考Go 操作mysql使用举例 下面例子中,演示了使用sh ...

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

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

  7. go语言之行--golang操作redis、mysql大全

    一.redis 简介 redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo写key-value存储系统,它由C语言编写.遵守BSD协议.支持网 ...

  8. Go基础之--操作Mysql(一)

    关于标准库database/sql database/sql是golang的标准库之一,它提供了一系列接口方法,用于访问关系数据库.它并不会提供数据库特有的方法,那些特有的方法交给数据库驱动去实现. ...

  9. Golang原生sql操作Mysql数据库增删改查

    Golang要操作mysql数据库,首先需要在当期系统配置GOPATH,因为需要使用go get命令把驱动包下载到GOPATH下使用. 首先配置好你的GOPATH,执行以下命令,下载安装mysql驱动 ...

随机推荐

  1. SpringBoot 设置请求字符串格式为UTF-8

    增加一个过滤器 package com.config; import com.jetsum.business.common.constant.CharsetConstant; import lombo ...

  2. Intellij IDEA添加插件

    1. Lombok插件 IDEA增加对Lombok的支持 <!--lombok插件--> <dependency> <groupId>org.projectlomb ...

  3. c++设计模式概述之外观

    类写的不够规范,目的是缩短篇幅,请实际中不要这样做. 1.概述 了解外观模式相关概念后,一下子想到的是主板, 主板上有各种元器件,各种指示灯,各种电容,各种电路.然而,主板供电的接口就一个,其他元器件 ...

  4. 【LeetCode】507. Perfect Number 解题报告(Python & Java & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  5. codeforc 603-A. Alternative Thinking(规律)

    A. Alternative Thinking time limit per test 2 seconds memory limit per test 256 megabytes   Kevin ha ...

  6. 第二十一个知识点:CRT算法如何提高RSA的性能?

    第二十一个知识点:CRT算法如何提高RSA的性能? 中国剩余定理(The Chinese Remainder Theorem,CRT)表明,如果我们有两个等式\(x = a \mod N\) 和\(x ...

  7. RabbitMQ学习笔记六:RabbitMQ之消息确认

    使用消息队列,必须要考虑的问题就是生产者消息发送失败和消费者消息处理失败,这两种情况怎么处理. 生产者发送消息,成功,则确认消息发送成功;失败,则返回消息发送失败信息,再做处理. 消费者处理消息,成功 ...

  8. Chapter 20 Treatment-Confounder Feedback

    目录 20.1 The elements of treatment-confounder feedback 20.2 The bias of traditional methods 20.3 Why ...

  9. uniapp h5中解决跨域问题

    "h5": { "title": "互联云玺", "template": "", "rou ...

  10. CS5213设计说明书|Capstone CS5213|CS5213设计参考电路

    Capstone CS5213是一款HDMI到VGA转换器结合了HDMI输入接口和模拟RGB DAC输出且带支持片上音频数模转换器.CS5213芯片设计简单,整体芯片尺寸精悍,外围电路集成优化度较高, ...