这篇文章主要给大家介绍了关于在Golang中如何对MySQL进行操作的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Golang具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

Golang官方并没有提供数据库驱动,但通过database/sql/driver包来提供了实现驱动的标准接口。可以在Github上找到很多开源的驱动。

其中go-sql-driver/mysql是一个比较推荐的驱动,其完全支持database/sql接口。

使用这个驱动, 在项目里import进:

import (
 "database/sql"
 _ "github.com/go-sql-driver/mysql"
)

在正式使用database/sql包之前,首先得明白sql.DB并不代表一个数据库连接,它并不会与数据库建立任何连接,也不会验证参数的合法性,要想知道DSN的合法性,需使用sql.DB实例(比如db)db.Ping() 方法, 如下:

err = db.Ping()
if err != nil {
 // 错误处理
}

使用sql.Open()方法即可获得一个sql.DB实例。需要注意的是,sql.DB的设计就是用来作为长连接使用的,不应该在项目里频繁的进行Open()与Close(),提倡的做法是声明一个全局的sql.DB实例, 将其复用起来。即只Open()一次,使用直到程序结束任务。

拿到sql.DB实例之后,就可以对数据库进行操作了。

在操作数据库时,推荐做法是使用db。Prepare()对SQL语句进行预编译,这样具有较高的安全性,可在一定程度上避免诸如SQL注入这样的攻击手段。

一些示例:

/*
 查询操作
*/
stmt, err := db.Prepare("SELECT `user_name` FROM `users` WHERE `id` = ?")
defer stmt.Close()
if err != nil {
 //错误处理
}
var userName string
//Scan() 将结果复制到userName
err = stmt.QueryRow(1).Scan(&userName)

fmt.Println(userName)

/*
 多行结果
*/
stmt, err := db.Prepare("SELECT `user_name` FROM `users` WHERE `age` = ?")
defer stmt.Close()
if err != nil {
 //错误处理
}

rows, err := stmt.Query(年龄)
if err != nil {
 //错误处理
}

for rows.Next() {
 var userName string
 if err := rows.Scan(&userName); err != nil {
  //错误处理
 }
}
/*
 插入操作
*/
stmt, err := db.Prepare("INSERT INTO `users` (`user_name`, `age`) VALUES(?, ?)")
defer stmt.Close()
if err != nil {
 //错误处理
}
stmt.Exec("名字",年龄)
/*
 事务
*/
tx, err := db.Begin()
if err != nil {
 //错误处理
}
defer tx.Rollback()

stmt, err := db.Prepare("")
defer stmt.Close()
if err != nil {
 //错误处理
}

stmt.Exec()
err = tx.Commit()
if err != nil {
 //错误处理
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对爱安网的支持。

最新资讯
谷歌想用AI帮言语障碍者“说话” 数据集是最大挑战

谷歌想用AI帮言语障碍

目前全球有 4.66 亿人患耳聋或听力障碍,这一数字在 205
苹果解散AR团队 5G能否激活这片“虚火”?

苹果解散AR团队 5G能

苹果AR项目夭折,意味着上述困扰AR/VR头戴设备多年的问
即刻App暂停服务 此前曾因违规收集用户信息被通报

pk10开奖结果即刻App暂停服务 此前

即刻App官方发布消息称,为了提供更好的服务,即日起将进
网易考拉“1元购”套路多 消费者吐槽更像交智商税

网易考拉“1元购”套

限时秒杀活动已经成为各电商平台的促销噱头之一。近日
从锤子到百度 钱晨说"做手机的人易忽略做音箱的难"

从锤子到百度 钱晨说

“天天想怎么做其他新的产品。”从锤子“退休”的前 C
直击|阿里:今年双11或达历史新高 猫晚首开白天时段

直击|阿里:今年双11或

2019天猫双11狂欢夜启动仪式举行。阿里巴巴营销平台总
最新文章
在go中使用omitempty的代码实例

在go中使用omitempty

今天小编就为大家分享一篇关于在go中使用omitempty的
go for range遍历二维数组的示例

go for range遍历二维

今天小编就为大家分享一篇关于go for range遍历二维数
Golang中重复错误处理的优化方法

Golang中重复错误处理

这篇文章主要给大家介绍了关于Golang中重复错误处理优
使用go gin来操作cookie的讲解

使用go gin来操作cook

今天小编就为大家分享一篇关于使用go gin来操作cookie
使用go来操作redis的方法示例

使用go来操作redis的

今天小编就为大家分享一篇关于使用go来操作redis的方
golang读取文件的常用方法总结

golang读取文件的常用

今天小编就为大家分享一篇关于golang读取文件的常用方
pk10开奖结果_eROY0V pk10开奖结果_V6Otlw pk10开奖结果_T8ZVwMY pk10开奖结果_QWyDe pk10开奖结果_3P5G4DD pk10开奖结果pk10开奖结果_AW7jP pk10开奖结果_z52Kz0 pk10开奖结果_QSGL1x pk10开奖结果_OKpXWwy pk10开奖结果_LCF5Ny