GO语言使用数据库——MySQL

本文介绍了在Go语言中如何使用database/sql包连接并操作MySQL数据库,包括连接配置、数据库表创建、增删改查操作的实现,以及事务的使用。通过具体的代码示例展示了如何进行数据库交互和事务管理。
摘要由CSDN通过智能技术生成

一、在go使用如何使用MySQL

Go语言中的database/sql包定义了对数据库的一系列操作。database/sql/driver包定义了应被数据库驱动实现的接口,这些接口会被sql包使用。但是Go语言没有提供任何官方的数据库驱动,所以我们需要导入第三方的数据库驱动。不过我们连接数据库之后对数据库操作的大部分代码都使用sql包。

1、使用前提:
成功安装MySQL
2、导入依赖包
1)导入包database/sql
2)导入第三方的驱动包go-sql-driver

二、go操作MySql数据库

1、 连接MySql数据库

1) 创建一个db.go文件,导入database/sql包以及第三方驱动包

import (
    "database/sql"

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

2) 定义两个全局变量

var (
    Db *sql.DB
    err    error
)

DB结构体的说明
这里写图片描述
3) 创建init函数,在函数体中调用sql包的Open函数获取连接

func init() {
    Db, err = sql.Open("mysql", "root:root@tcp(localhost:3306)/test")
    if err != nil {
        panic(err.Error())
    }
}

Open函数的说明
这里写图片描述
参数dataSourceName的格式:

数据库用户名:数据库密码@[tcp(localhost:3306)]/数据库名

Open函数可能只是验证其参数,而不创建与数据库的连接。如果要检查数据源的名称是否合法,应调用返回值的Ping方法。
这里写图片描述
返回的DB可以安全的被多个go程同时使用,并会维护自身的闲置连接池。这样一来,Open函数只需调用一次。很少需要关闭DB

2、创建数据库表
table.sql

CREATE TABLE `user` (
`id`  int(100) NOT NULL AUTO_INCREMENT ,
`name`  varchar(100) NULL ,
`age`  int(100) NULL ,
`sex`  varchar(100) NULL ,
`likes`  varchar(100) NULL ,
PRIMARY KEY (`id`)
)
;
//创建数据库表
func createTable(DB *sql.DB)  error {

    sqlBytes, err := ioutil.ReadFile(tableName);
    if err != nil {
        return err
    }
    sqlTable := string(sqlBytes);
    fmt.Println(sqlTable)

    _, err = DB.Exec(sqlTable)
    if err != nil {
        return err
    }
    return nil
}

3、增删改查操作

  • Prepare方法的说明

    这里写图片描述

  • Stmt结构体及它的方法的说明

    这里写图片描述

  • DB结构体中也有Exec、Query和QueryRow方法
    这里写图片描述

  • Row结构体及San方法的说明

  • 这里写图片描述
  • Rows结构体说明
    这里写图片描述

  • Next方法和Scan方法说明

这里写图片描述
代码实例:
获取DB

package utils

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)
var (
    Db  *sql.DB
    err error
)

func init() {
    Db, err = sql.Open("mysql", "root:root@tcp(localhost:3306)/godb")
    if err != nil {
        panic(err.Error())
    }
}

user

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值