Go原生就支持连接数据库,所以在使用 Golang 开发时,当需要数据库交互时,即可使用database/sql包。

Golang如何优雅连接MYSQL数据库?_sql

​sql.DB​
​database/sql​
​github.com/go-sql-driver/mysql​

Golang如何优雅连接MYSQL数据库?_sql_02

包名前的"_"

Golang如何优雅连接MYSQL数据库?_数据库_03

import 下划线(如:import _ github/demo)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。

上面的MySQL驱动中引入的就是MySQL包中各个init()方法,​你无法通过包名来调用包中的其他函数​。导入时,驱动的初始化函数会调用​sql.Register​将自己注册在​database/sql​包的全局变量​sql.drivers​中,以便以后通过sql.Open访问。

Golang如何优雅连接MYSQL数据库?_sqlite_04

Golang如何优雅连接MYSQL数据库?_sql_02

案例用数据表

Golang如何优雅连接MYSQL数据库?_数据库_03

Golang如何优雅连接MYSQL数据库?_数据库_07

初始化数据库连接

Golang如何优雅连接MYSQL数据库?_数据库_08

Golang如何优雅连接MYSQL数据库?_oracle_09

​"用户名:密码@tcp(IP:端口)/数据库?charset=utf8"​​*sql.DB​
​Query​​Exec​
​Query​​Exec​

常见数据库操作模式:

​QueryRow​​Query​​Prepare​


Golang如何优雅连接MYSQL数据库?_sql_02

查询操作

Golang如何优雅连接MYSQL数据库?_数据库_03

执行流程

Golang如何优雅连接MYSQL数据库?_数据库_08

​db.Query()​​Rows​​rows.Next()​​rows.Scan​​rows.Err()​​rows.Close()​


Golang如何优雅连接MYSQL数据库?_sql_02

增删改和Exec

Golang如何优雅连接MYSQL数据库?_数据库_03

​Result​​Result​

Golang如何优雅连接MYSQL数据库?_sql_02

准备查询

Golang如何优雅连接MYSQL数据库?_数据库_03

​db.Prepare​

Golang如何优雅连接MYSQL数据库?_sql_02

占位符

Golang如何优雅连接MYSQL数据库?_数据库_03

​$N​​N​​?​​:param1​

5. 事务的使用

​db.Begin()​​Begin​​Tx​​Tx​​Commit()​​Rollback()​​Tx​​Tx​​sql.DB​​Query,Exec​


目前交流群已有​ 800+​人,旨在促进技术交流,可关注公众号

Golang如何优雅连接MYSQL数据库?_oracle_19