IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

MySQL driver(驱动) liblbmysql for Go1

本机暂存

Go语言1.0出来之后,原来可用的MySQL驱动在新版本上基本不可用了,于是这几天自己写了个简单的MySQL的驱动,暂不支持prepare,没有implement sql/driver. 或许有能用的上的朋友,所以分享出来. 先介绍用法,后面提供下载链接.
先直接上例子

package main

import (
        "log"
        "liblbmysql"
)

func main() {
        settings := make(map[string]interface{})

        settings["host"] = "localhost"
        settings["port"] = 3306
        settings["uname"] = "ivan"
        settings["pass"] = "******"
        settings["dbname"] = "test"
        settings["charset"] = "utf8"
       
        conn, err := liblbmysql.Connect(settings)
        if err != nil {
                log.Fatal("Connect to MySQL error: %v", err)
        }

        var qr *liblbmysql.QueryResult

        qr, err = conn.ExecuteFetch("select * from ivan")
        if err != nil {
                log.Printf("query error: %v", err)
        } else {
                for {
                        m := qr.FetchMap()
                        if m != nil {
                                log.Printf("row map: %v\n", m)
                        } else {
                                break
                        }
                }
        }
        qr.Free()
        conn.Close()
}
 

  • 库名: package liblbmysql, 因此将 liblbmysql.a 保存到对应的pkg目录下,然后 import(“liblbmysql”)即可引入该mysql驱动
  • 连接MySQL配置参数: 类型:map[string]interface{}, 可配置的参数有host, port, unix_socket, uname, pass, dbname, charset 分别对应MySQL数据库的ip, 端口, unix socoket, 用户名,密码,初始化数据库,连接字符集.

相关方法\结果集\字段\记录等的类型定义:

type QueryResult struct {
        Fields       []Field
        RowsAffected uint64
        InsertId     uint64
        Rows         [][]interface{}
        …
}

type Field struct {
        Name string
        Type int64
        …
}

func Connect(info map[string]interface{}) (conn *Connection, err error)

func (this *Connection) Begin() (err error)

func (this *Connection) Commit() (err error)

func (this *Connection) Rollback() (err error)

func (this *Connection) ExecuteFetch(query string) (qr *QueryResult, err error)

func (qr *QueryResult) FetchRow() []interface{}

func (qr *QueryResult) FetchRows() [][]interface{}

func (qr *QueryResult) FetchMap() map[string]interface{}

func (qr *QueryResult) Free()
 

这里QueryResult的Fetch函数返回的字段记录都是字符串结果,为了统一暂时没有将结果转换成Go语言中对应的数据类型,也是为了统一,方便程序员自己转换处理.

liblbmysql 下载地址:

PS: liblbmysql 取名由来 LegendBase driver for MySQL

同分类推荐文章

  1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,252)
  2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,400)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
  4. Mysql监控指南 (累计阅读 21,352)
  5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,523)
  6. Go Reflect 性能 (累计阅读 14,157)
  7. 面向“接口”编程和面向“实现”编程 (累计阅读 13,910)
  8. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 13,058)
  9. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  10. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,909)