栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

go mysql教学

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go mysql教学

开发环境准备

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        (注意有冒号)

增删

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/904568.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号