美文网首页程序员
Go语言操作MySQL

Go语言操作MySQL

作者: markfork | 来源:发表于2018-10-21 16:36 被阅读23次

章节

  • 写在前面
  • go 操作 MySQL
  • 感想

1.写在前面

接下来的记录中会附带记录当日工作学习到的东西,包括且不限于 技术、软实力-沟通、心态、理财、个人思考等

2.go 操作MySQL

如Java操作数据库,编程逻辑如下:
驱动加载、获取连接(connect)、生成Statement || PrepareStatement 对象、sql传参、exec or query、获取结果集 Resultset,go 操作MySQL的步骤也是如上步骤。

注意:go 加载驱动 需要依靠远程 import 的 驱动包 github.com/go-sql-driver/mysql

如下代码所示,演示了 基础操作 CURD
DbOperate.go

package DB

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

//返回数据库连接句柄
func connDb() *sql.DB {
    db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/demo?charset=utf8")
    checkErr(err)
    return db
}

//insert
func DoInsert(sql string) {
    db := connDb()
    sql = "insert into test(name) value (?)"
    
    stmt, err := db.Prepare(sql)
    checkErr(err)

    res, err := stmt.Exec("bofengliu")
    checkErr(err)

    fmt.Printf("成功了,%v", res)
}

//delete
func DoDelete(id int) {
    db := connDb()
    sql := "delete from test where id = ?"

    stmt, err := db.Prepare(sql)
    checkErr(err)

    res, err := stmt.Exec(id)
    checkErr(err)

    res = nil

    fmt.Println(res)
}

//update
func DoUpdate(name string, id int) int64 {
    db := connDb()
    sql := "update test set name = ? where id = ?"

    stmt, err := db.Prepare(sql)
    checkErr(err)

    res, err := stmt.Exec(name, id)
    checkErr(err)

    affect, err := res.RowsAffected()

    fmt.Println("影响数据集行数为", affect)

    return affect
}

func DoQueryByName(name string) {
    sql := "select * from test where name = \"" + name + "\""
    db := connDb()

    res, err := db.Query(sql)
    checkErr(err)

    for res.Next() {
        var id int
        var name string
        err := res.Scan(&id, &name)
        checkErr(err)

        fmt.Println(id)
        fmt.Println(name)
    }

}

func checkErr(err error) {
    if err != nil {
        panic(err.Error())
    }
}

数据表结构如下所示:

 CREATE TABLE `test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `name` (`name`),
  KEY `idx_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8 |

上述代码中通过import 引入了 github.com/go-sql-driver/mysql,注意前方有 _ ,此代表 引入的远程包 不会在代码中直接使用,而是被程序间接加载,加载位置为 db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/demo?charset=utf8")

源代码如下所示:

// 支持多种驱动加载 ,当前程序中加载驱动为MySQL 驱动
func Open(driverName, dataSourceName string) (*DB, error) {
    driversMu.RLock()
    driveri, ok := drivers[driverName]
    driversMu.RUnlock()
    if !ok {
        return nil, fmt.Errorf("sql: unknown driver %q (forgotten import?)", driverName)
    }

    if driverCtx, ok := driveri.(driver.DriverContext); ok {
        connector, err := driverCtx.OpenConnector(dataSourceName)
        if err != nil {
            return nil, err
        }
        return OpenDB(connector), nil
    }

    return OpenDB(dsnConnector{dsn: dataSourceName, driver: driveri}), nil
}

经测试 没有问题,此为go 操作 MySQL 初体验。

3.感想

基础要牢靠,越是简单的东西,越需要记录。

完。

相关文章

  • Go操作MySQL

    Go语言操作MySQL MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作...

  • Go操作MySQL

    MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作MySQL 连接 Go语...

  • Go语言操作MySQL

    章节 写在前面 go 操作 MySQL 感想 1.写在前面 接下来的记录中会附带记录当日工作学习到的东西,包括且不...

  • Go语言操作MySql

    1. 知识储备 Go语言基础知识具备一般的SQL知识测试机器上安装了数据库服务端,我们默认使用MySql 2. 安...

  • go 语言操作mysql

    简介 https://yq.aliyun.com/articles/178898?utm_content=m_29...

  • 3.1 Go操作MySQL数据库

    3.1 Go操作MySQL数据库 安装go操作MySQL的驱动go get -u -v github.com/go...

  • golang第五天

    学习go操作mysql,crud测试 代码 总结 go操作mysql 打卡时间: 21:04

  • 21.连接MySQL

    MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 go文件不是同一个模块,关闭go...

  • MySQL数据实时增量同步到Elasticsearch

    一、go-mysql-transfer go-mysql-transfer是使用Go语言实现的MySQL数据库实时...

  • MySQL数据实时增量同步到Redis

    一、go-mysql-transfer go-mysql-transfer是使用Go语言实现的MySQL数据库实时...

网友评论

    本文标题:Go语言操作MySQL

    本文链接:https://www.haomeiwen.com/subject/wdvbzftx.html