GO连接数据库--踩坑(超详细)
2021/11/17 19:11:07
本文主要是介绍GO连接数据库--踩坑(超详细),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
当使用go语言对数据进行连接时需要几部操作:
1.数据库侧:
需要允许远程连接,具体操作方法详见:本地主机连接阿里云数据库(自建数据库)排雷_秋为春的博客-CSDN博客
2.GO侧
1)需要引入go-sql-driver驱动
常见的引入方法有两种:
①通过命令行——前提是go的各个环境变量要配置好
go get -u github.com/go-sql-driver/mysql
②通过git进行复制
首先你的电脑要支持git这个命令,如果不支持需要下载安装Git下载地址给你放这了:
Git for Windows
下载安装后,直接把驱动Git到go path目录下:
git clone github.com/go-sql-driver/mysql
之后在go中使用用这个驱动:
import ( "database/sql" "fmt" _ "mysql" //引入 )
验证是否可以使用go对数据库进行操作:
首先创建一个数据库:
create database test;
以及一个表:
create table table( id int(4), name char(20) )
通过GO代码对数据库进行简单操作:
语法详解:
sql.open(驱动名,数据源dsn)(*DB,err) 数据源语法:"用户名:密码@[连接方式](主机名:端口号)/数据库名" 注意:open()在执行时不会真正的与数据库进行连接,只是设置连接数据库需要的参数 ping()方法才是连接数据库
代码操作:
package main import ( "database/sql" "fmt" _ "mysql" ) func main() { db, err := sql.Open("mysql", "root:xxx@(xxxx:3306)/test") checkErr(err) // insert stmt, err := db.Prepare("INSERT ta SET id=?,name=?") checkErr(err) res, err := stmt.Exec(1, "wang") checkErr(err) // update stmt, err = db.Prepare("update ta set name=? where id=?") checkErr(err) res, err = stmt.Exec("wang", 1) checkErr(err) affect, err := res.RowsAffected() checkErr(err) fmt.Println(affect) // query rows, err := db.Query("SELECT * FROM ta") checkErr(err) for rows.Next() { var uid int var username string err = rows.Scan(&uid, &username) checkErr(err) fmt.Println(uid) fmt.Println(username) } // delete stmt, err = db.Prepare("delete from ta where id=?") checkErr(err) res, err = stmt.Exec(1) checkErr(err) // query rows, err = db.Query("SELECT * FROM ta") checkErr(err) for rows.Next() { var uid int var username string err = rows.Scan(&uid, &username) checkErr(err) fmt.Println(uid) fmt.Println(username) } db.Close() } func checkErr(err error) { if err != nil { panic(err) } }
验证:
这篇关于GO连接数据库--踩坑(超详细)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享