golang操作mysql
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的更多相关文章
- [转帖]golang操作mysql使用总结
golang操作mysql使用总结 https://www.cnblogs.com/hanyouchun/ 讲解的很详细~ 前言 Golang 提供了database/sql包用于对SQL数据库的访问 ...
- golang操作mysql数据库
golang操作mysql数据库 代码: mysql的增.删.改.查 package main import ( "database/sql" "fmt" &q ...
- golang操作mysql使用总结
前言 Golang 提供了database/sql包用于对SQL数据库的访问, 作为操作数据库的入口对象sql.DB, 主要为我们提供了两个重要的功能: sql.DB 通过数据库驱动为我们提供管理底层 ...
- Golang操作MySQL的正确姿势
封装原因: 查看了很多网上提供的ORM类型的数据库操作,觉得比较麻烦,需要提前配置很多的表结构体,然后才能使用,对于数据表很多的项目就配置起来就比较麻烦,所以对golang的mysql包进行了外层包装 ...
- Golang 操作mysql使用举例---连接本地数据库
连接数据库的方式有两种:TCP和Unix域socket. 本文使用Unix domain sockets连接数据库.关于TCP连接数据库可以参考Go 操作mysql使用举例 下面例子中,演示了使用sh ...
- Mysql学习(一)添加一个新的用户并用golang操作Mysql
Mysql添加一个新的用户并赋予权限 添加一个自己的用户到mysql 首先我们需要先用root用户登录mysql,但是刚安装完没有密码,我们先跳过密码 ailumiyana@ailumiyana:~/ ...
- go语言之行--golang操作redis、mysql大全
一.redis 简介 redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo写key-value存储系统,它由C语言编写.遵守BSD协议.支持网 ...
- Go基础之--操作Mysql(一)
关于标准库database/sql database/sql是golang的标准库之一,它提供了一系列接口方法,用于访问关系数据库.它并不会提供数据库特有的方法,那些特有的方法交给数据库驱动去实现. ...
- Golang原生sql操作Mysql数据库增删改查
Golang要操作mysql数据库,首先需要在当期系统配置GOPATH,因为需要使用go get命令把驱动包下载到GOPATH下使用. 首先配置好你的GOPATH,执行以下命令,下载安装mysql驱动 ...
随机推荐
- SpringBoot 设置请求字符串格式为UTF-8
增加一个过滤器 package com.config; import com.jetsum.business.common.constant.CharsetConstant; import lombo ...
- Intellij IDEA添加插件
1. Lombok插件 IDEA增加对Lombok的支持 <!--lombok插件--> <dependency> <groupId>org.projectlomb ...
- c++设计模式概述之外观
类写的不够规范,目的是缩短篇幅,请实际中不要这样做. 1.概述 了解外观模式相关概念后,一下子想到的是主板, 主板上有各种元器件,各种指示灯,各种电容,各种电路.然而,主板供电的接口就一个,其他元器件 ...
- 【LeetCode】507. Perfect Number 解题报告(Python & Java & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- codeforc 603-A. Alternative Thinking(规律)
A. Alternative Thinking time limit per test 2 seconds memory limit per test 256 megabytes Kevin ha ...
- 第二十一个知识点:CRT算法如何提高RSA的性能?
第二十一个知识点:CRT算法如何提高RSA的性能? 中国剩余定理(The Chinese Remainder Theorem,CRT)表明,如果我们有两个等式\(x = a \mod N\) 和\(x ...
- RabbitMQ学习笔记六:RabbitMQ之消息确认
使用消息队列,必须要考虑的问题就是生产者消息发送失败和消费者消息处理失败,这两种情况怎么处理. 生产者发送消息,成功,则确认消息发送成功;失败,则返回消息发送失败信息,再做处理. 消费者处理消息,成功 ...
- Chapter 20 Treatment-Confounder Feedback
目录 20.1 The elements of treatment-confounder feedback 20.2 The bias of traditional methods 20.3 Why ...
- uniapp h5中解决跨域问题
"h5": { "title": "互联云玺", "template": "", "rou ...
- CS5213设计说明书|Capstone CS5213|CS5213设计参考电路
Capstone CS5213是一款HDMI到VGA转换器结合了HDMI输入接口和模拟RGB DAC输出且带支持片上音频数模转换器.CS5213芯片设计简单,整体芯片尺寸精悍,外围电路集成优化度较高, ...