当前位置: 首页 > news >正文

go 连接操作MySQL

连接Mysql

  1. 访问此网站搜索MySQL
  2. 第一个就是按照指引运行
go get -u github.com\go-sql-driver\mysql
  1. 导入包建立连接
package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}// ...func main() {err := initdb()if err != nil {panic(err)}}

插入数据

func(db *DB) Exec(query string,args...interface{})(Result,error)package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}func insertValue(name string, password string) (result sql.Result, err error) {query := "insert into user_tbl(name,password) values(?,?)"result, err = db.Exec(query, name, password)if err != nil {fmt.Printf("err: %v\n", err)}fmt.Printf("result: %v\n", result)// 最后插入的IDfmt.Println(result.LastInsertId())return
}// ...func main() {err := initdb()if err != nil {panic(err)}insertValue("ellis", "ellis")
}

查询

  • 单行查询使用QueryRow,详见selectOne函数
package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}type User struct {id       intname     stringpassword string
}func searchOne() {var user Userdb.QueryRow("select * from user_tbl where id=1").Scan(&user.id, &user.name, &user.password)fmt.Printf("user.id: %v\n", user.id)
}// ...func main() {err := initdb()if err != nil {panic(err)}searchOne()
}
  • 查询多行
package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}type User struct {id       intname     stringpassword string
}func searchAll() {query := "select * from user_tbl"r, err := db.Query(query)defer r.Close()if err != nil {fmt.Printf("err: %v\n", err)} else {// 一行行的读for r.Next() {var u Userr.Scan(&u.id, &u.name, &u.password)fmt.Printf("u: %v\n", u)}}
}// ...func main() {err := initdb()if err != nil {panic(err)}fmt.Printf("db: %v\n", db)searchAll()
}

更新

package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}type User struct {id       intname     stringpassword string
}func update() {sql := "update user_tbl set name=? where id=?"r, err := db.Exec(sql, "vv", 1)if err != nil {fmt.Printf("err: %v\n", err)} else {//打印影响行数fmt.Println(r.RowsAffected())}
}func main() {err := initdb()if err != nil {panic(err)}update()
}

删除

package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}type User struct {id       intname     stringpassword string
}func delete() {sql := "delete from user_tbl where id=?"r, err := db.Exec(sql, 1)if err != nil {fmt.Printf("err: %v\n", err)} else {//打印影响行数fmt.Println(r.RowsAffected())}
}func main() {err := initdb()if err != nil {panic(err)}delete()
}
http://www.lryc.cn/news/136631.html

相关文章:

  • git常见的命令,问题和处理方式
  • Ubuntu环境下超好用的文件对比工具软件meld
  • Channel是什么?FileChannel类的常用方法
  • Python爬虫——scrapy_读书网数据入库和链接跟进
  • 前端常用linux命令
  • 制作高质量SVG的最佳工具,这些编辑软件你需要知道!
  • 四、MySQL性能优化
  • Oracle Database12c数据库官网下载和安装教程
  • spring依赖注入详解(下)
  • python的dataframe常用处理方法
  • k8s 自身原理之高可用
  • 游乐场vr设备虚拟游乐园vr项目沉浸体验馆
  • window10安装并使用oracle
  • [Mac软件]AutoCAD 2024 for Mac(cad2024) v2024.3.61.182中文版支持M1/M2/intel
  • Oracle 主从库目录不一致(异路径)的n种处理方案及效果
  • 创建型(一) - 简单工厂模式、工厂方法模式和抽象工厂模式
  • LeetCode3.无重复字符的最长子串
  • 鲁图中大许少辉博士八一新书《乡村振兴战略下传统村落文化旅游设计》山东省图书馆典藏
  • 如何发布自己的小程序
  • 【微服务】spring 条件注解从使用到源码分析详解
  • 客户案例:高性能、大规模、高可靠的AIGC承载网络
  • Flutter性能揭秘之RepaintBoundary
  • 29.Netty源码之服务端启动:创建EventLoopSelector流程
  • Kotllin实现ArrayList的基本功能
  • C++的初步介绍,以及C++与C的区别
  • JDK 核心jar之 rt.jar
  • el-form表单验证:只在点击保存时校验(包含select、checkbox、radio)
  • Golang基本语法(上)
  • jenkins使用
  • 多线程基础篇(包教包会)