go mysql教学

go mysql教学,第1张

开发环境准备

Go *** 作 mysql 需要使用的包:go-sql-driver/mysql 和 sqlx

sqlx 包是作为 database/sql 包的一个额外扩展包,在原有的 database/sql 上加了很多扩展,如果将查询的数据转为结构体,大大简化了代码书写,当然,database/sql 包中的方法同样起作用

github 地址:

https://github.com/go-sql-driver/mysql

https://github.com/jmoiron/sqlx

安装:

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

go get "github.com/jmoiron/sqlx"

连接数据库示例:

var Db *sqlx.DB

db, err := sqlx.Open("mysql","username:password@tcp(ip:port)/database?charset=utf8")

Db = db

处理类型(Handle Types)

sqlx 设计和 database/sql 使用方法是一样的,包含有 4 个主要的 handle types

sqlx.DB                        表示数据库(与 sql.DB 相似)

sqlx.Tx                         表示事物(与 sql.Tx 相似)

sqlx.Stmt                      表示 prepared statement(和 sql.Stmt 相似)

sqlx.NamedStmt          表示 prepared statement(支持 named parameters)

所有的 handle types 都提供了对 database/sql 的兼容,意味着当你调用 sqlx.DB.Query 时,可以直接替换为 sql.DB.Query,这就使得 sqlx 可以很容易的加入到已有的数据库项目中

此外,sqlx 还有两个 cursor 类型:

sqlx.Rows            (和 sql.Rows 类似,Queryx 返回)

sqlx.Row              (和 sql.Row 类似,QueryRowx 返回)

相比 database/sql 还多了新的方法,也就是将获取的数据直接转换成 结构体

Get(dest interface{}, ...) error

Select(dest interface{}, ...) error

建表

以下所有 demo 都以下表结构作为基础

CREATE TABLE`userinfo` (

`uid`INT(10) NOT NULLAUTO_INCREMENT,

`create_time`datetime DEFAULT NULL,

`username`VARCHAR(64) DEFAULT NULL,

`password`VARCHAR(32) DEFAULT NULL,

`department`VARCHAR(64) DEFAULT NULL,

`email`varchar(64) DEFAULT NULL,PRIMARY KEY(`uid`)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

Exec() 方法使用

Exec 和 MustExec 从连接池中获取一个连接然后指向对应的 query *** 作,对于不支持 ad-hoc query execution 的驱动,在 *** 作执行的背后会创建一个 prepared statement,在结果返回前,这个 connection 会返回到连接池中

需要注意的是,不同的数据库,使用的占位符不同,mysql 采用 ? 作为占位符

Mysql 使用 ?

PostgreSQL 使用 1,1,2 等等

SQLLite 使用 ? 或 $1

Oracle 使用 :name        (注意有冒号)

增删

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/993772.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存