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

郑州市网站和公众号建设长沙公积金网站怎么做异动

郑州市网站和公众号建设,长沙公积金网站怎么做异动,网站建设公开课,用cms做网站的具体步骤MySQL 作为目前最流行的开源关系型数据库,其 SQL 语法体系已形成行业标准,相关知识体系庞大且成熟,本文不再对 SQL 基础进行详细展开,建议尚未掌握的读者先行系统学习。本文聚焦于如何使用 Go 语言进行 MySQL 数据库操作&#xff…

MySQL 作为目前最流行的开源关系型数据库,其 SQL 语法体系已形成行业标准,相关知识体系庞大且成熟,本文不再对 SQL 基础进行详细展开,建议尚未掌握的读者先行系统学习。本文聚焦于如何使用 Go 语言进行 MySQL 数据库操作,旨在为开发者提供实践层面的技术指引。

在实际项目开发中,直接使用数据库驱动进行操作的场景较少,更多开发者会选择采用 ORM(对象关系映射)框架来简化开发流程。本文选用的sqlx库,作为 Go 标准sql库的增强版本,虽然不具备完整的 ORM 功能,但凭借简洁高效、轻量灵活的特性,在中小型项目或对性能要求较高的场景中备受青睐。若更倾向于功能完备的 ORM 解决方案,推荐探索GormXormEnt等业界知名的 ORM 框架,它们在自动化映射、复杂查询构建等方面表现出色,能显著提升开发效率。

安装

首先需要安装Go的MySQL驱动:

$ go get github.com/jmoiron/sqlx

sqlx或者说标准库database/sql支持的数据库不止 MySQL,任何实现了driver.Driver接口的类型都支持,比如:

  • PostgreSQL
  • Oracle
  • MariaDB
  • SQLite
  • 等其他关系数据库

要使用对应的数据库,就需要实现数据库驱动,驱动可以是你自己写的,也可以是第三方库,在使用之前你就要先使用sql.Register注册驱动,然后才能使用。不过一般下载的驱动库都会自动注册驱动,不需要你来手动注册。

func Register(name string, driver driver.Driver)

由于 MySQL 比较流行,也最为简单,所以本文采用 MySQL 来讲解,其他关系数据库操作起来都是大差不大差的,下载 MySQL 驱动库

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

连接数据库

通过sqlx.Open函数,就可以打开一个数据库连接,它接受两个参数,第一个是驱动名称,第二个就是数据源(一般简称 DSN)。

func Open(driverName, dataSourceName string) (*DB, error)

驱动名称就是注册驱动时使用的名称,需要保持一致,DSN 就是数据库的连接地址,每种数据库都可能会不一样,对于 MySQL 而言就是下面这样

db, err := sqlx.Open("mysql", "user:pass@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True")
if err != nil {panic(err)
}
defer db.Close()

查询

单条查询

var db *sqlx.DBtype Person struct {UserId   string `db:"id"`Username string `db:"name"`Age      int    `db:"age"`Address  string `db:"address"`
}func init() {conn, err := sqlx.Open("mysql", "root:wyh246859@tcp(127.0.0.1:3306)/test")if err != nil {fmt.Println("Open mysql failed", err)return}db = conn
}func main() {query()defer db.Close()
}func query() {var person Person//查询一个是Get,多个是Selecterr := db.Get(&person, "select * from user where id = ?", "12132")if err != nil {fmt.Println("query failed:", err)return}fmt.Printf("query succ:%+v", person)
}func list() {var perons []Personerr := db.Select(&perons, "select * from user")if err != nil {fmt.Println("list err", err)return}fmt.Printf("list succ,%+v", perons)
}

多条查询

var users []User
err := db.Select(&users, "SELECT id, name FROM users WHERE age > ?", 18)

插入

单条插入

func insert() {result, err := db.Exec("insert into user value (?,?,?,?)", "120230", "李四", 12, "广州市")if err != nil {fmt.Println("insert err:", err)return}id, err := result.LastInsertId()if err != nil {fmt.Println("insert err:", err)return}fmt.Println("insert succ:", id)
}

命名参数插入

_, err := db.NamedExec("INSERT INTO users(name, age) VALUES(:name, :age)", map[string]interface{}{"name": "李四", "age": 30})

更新

func update() {res, err := db.Exec("update user set name = ? where id = ?", "赵六", "120230")if err != nil {fmt.Println("update err:", err)return}eff, err := res.RowsAffected()if err != nil || eff == 0 {fmt.Println("update err:", err)return}fmt.Println("Update succ")
}

删除

func delete() {res, err := db.Exec("delete from user where id = ?", "120230")if err != nil {fmt.Println("delete err:", err)return}eff, err := res.RowsAffected()if err != nil || eff == 0 {fmt.Println("delete err:", err)return}fmt.Println("delete succ")
}

事务处理

func (db *DB) Begin() (*Tx, error) 	// 开始一个事务
func (tx *Tx) Commit() error		// 提交一个事务
func (tx *Tx) Rollback() error 		// 回滚一个事务

当开启一个事务后,为了保险都会加一句defer tx.Rollback(),如果如果过程出错了,就会回滚,要是事务成功提交了,这个回滚自然是无效的。

func main() {transation, err := db.Begin()if err != nil {fmt.Println("transation err")}defer transation.Rollback()insert()query()update()query()delete()transation.Commit()
}

参考资料:

Golang 中文学习文档 - 数据库 - MySQL

http://www.dtcms.com/a/435144.html

相关文章:

  • 平面设计有什么网站wordpress 汽车模板下载
  • 珠宝首饰网站开发郑州微盟网站建设公司
  • 网站建设毕业设计指导老师意见什么网站可以做设计
  • 想学做网站要去哪里学健身网站开发过程中遇到的麻烦
  • 网站建设方案设计书参考西安最新消息今天
  • 代做道具网站备案网站可以做论坛么
  • SnapTube v7.46.1.74675101 | 免登下载油管4K视频,支持上百个网站的视频和音乐下载
  • 图像AUROC和像素AUROC
  • 网站加载速度影响因素为什么不能自己做网站
  • 网站正在建设中 htmlwordpress开发手册中文
  • 开发手机应用网站竞价托管推广代运营
  • 【开题答辩全过程】以 zy旅游健身为例,包含答辩的问题和答案
  • 做淘宝详情页的素材网站资金盘网站开发价格
  • 网站建设可上传视频的怎么关闭seo综合查询
  • 贵州企业网站建设有什么做木工的网站
  • 商场应急预案管理系统|基于SpringBoot和Vue的大型商场应急预案管理系统(源码+数据库+文档)
  • 基于重构的异常检测方法
  • Java设计模式之工厂模式
  • 厦门 网站建设 公司wordpress widget hook
  • 宜昌 公司 网站建设品牌运营策略
  • CAP 定理与 BASE 理论:分布式系统的权衡之道
  • 藏语自然语言处理入门 - 1 清理文本
  • 北京网站seo招聘如何修复网站中的死链
  • Linux(操作系统)文件系统--对打开文件的管理(C语言层面)
  • 计算机本科论文 网站建设闵行做网站费用
  • 阿里网 网站备案流程模板网站怎么做
  • “极简开发”
  • 工业与信息安全的交汇点:IT 与 OT 安全融合
  • android设置fiddler代理问题总结
  • 基于websocket的多用户网页五子棋(二)