Go语言的 database/sql 包的一个 MySQL驱动。

特性

  • 轻量级与快速
  • 原生Go语言,没有C绑定,只有纯Go
  • 没有不安全的操作(类型转换等)
  • 动态处理崩溃的连接
  • 动态连接池
  • 支持大于16MB的查询
  • 完全 sql.RawBytes支持

环境要求

  • Go 1以上
  • MySQL (Version 4.1 or higher), MariaDB or Percona Se
  • rver

安装

简单地使用 go tool 在shell中把安装包加到你的$GOPATH

 
 
1
$ go get github.com/go-sql-driver/mysql

使用

sql包的用法简洁明了:
1、建立连接
首先是Open,
db, err := sql.Open(“mysql”, “user:password@/dbname”)
db 是一个*sql.DB类型的指针,在后面的操作中,都要用到db
open之后,并没有与数据库建立实际的连接,与数据库建立实际的连接是通过Ping方法完成。此外,db应该在整个程序的生命周期中存在,也就是说,程序一启动,就通过Open获得db,直到程序结束,再Close db,而不是经常Open/Close。
err = db.Ping()

2、基本用法
DB的主要方法有:
Query 执行数据库的Query操作,例如一个Select语句,返回*Rows

QueryRow 执行数据库至多返回1行的Query操作,返回*Row

PrePare 准备一个数据库query操作,返回一个*Stmt,用于后续query或执行。这个Stmt可以被多次执行,或者并发执行

Exec 执行数不返回任何rows的据库语句,例如delete操作

Stmt的主要方法:
Exec
Query
QueryRow
Close
用法与DB类似
Rows的主要方法:
Cloumns: 返回[]string,column names
Scan:
Next:
Close:
详见:
http://golang.org/pkg/database/sql/
https://github.com/go-sql-driver/mysql/wiki/Examples
https://github.com/VividCortex/go-database-sql-tutorial
这篇文章有很多示例,通俗易懂

一段简单的测试代码:

 
 
 
 
 

Java

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package main
 
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"log"
)
 
func insert(db *sql.DB) {
stmt, err := db.Prepare("INSERT INTO user(username, password) VALUES(?, ?)")
defer stmt.Close()
 
if err != nil {
log.Println(err)
return
}
stmt.Exec("guotie", "guotie")
stmt.Exec("testuser", "123123")
 
}
 
func main() {
db, err := sql.Open("mysql", "root:guotie@/hello")
if err != nil {
log.Fatalf("Open database error: %s\n", err)
}
defer db.Close()
 
err = db.Ping()
if err != nil {
log.Fatal(err)
}
 
insert(db)
 
rows, err := db.Query("select id, username from user where id = ?", 1)
if err != nil {
log.Println(err)
}
 
defer rows.Close()
var id int
var name string
for rows.Next() {
err := rows.Scan(&id, &name)
if err != nil {
log.Fatal(err)
}
log.Println(id, name)
}
 
err = rows.Err()
if err != nil {
log.Fatal(err)
}
}

github地址https://github.com/go-sql-driver/mysql,官网地址 http://godoc.org/github.com/go-sql-driver/mysql。

Go-MySQL-Driver:一个Go语言的轻量级极速的mysql驱动的更多相关文章

  1. mysql中将一个数据类型转换成另外的数据类型?mysql中cast函数的使用?

    需求描述: 今天在看mysql的函数,提到了通过cast函数将一个数据类型值转换为特定类型的结果值. 在此记录下.将一个表达式转换为特定精度的小数. 操作过程: 1.查看6/4的结果 mysql; + ...

  2. 一个高级的J2E工程师需要面对MySQL要有那些基本功夫呢<上>

    1. MySQL的架构介绍1.1 MySQL简介: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不 ...

  3. MySQL入门——MySQL数据库和SQL语言

    MySQL入门——MySQL数据库和SQL语言 摘要:本文主要了解了MySQL关系型数据库和SQL语言的基本知识. MySQL数据库 简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB ...

  4. com.mysql.jdbc.Driver 与 org.gjt.mm.mysql.Driver的区别

    com.mysql.jdbc.Driver的前身是org.gjt.mm.mysql.Driver,现在主要用com.mysql.jdbc.Driver,但为了保持兼容性保留了org.gjt.mm.my ...

  5. CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

    CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理 ...

  6. mysql数据库从删库到跑路之mysql基础

    一 数据库是什么 之前所学,数据要永久保存,比如用户注册的用户信息,都是保存于文件中,而文件只能存在于某一台机器上. 如果我们不考虑从文件中读取数据的效率问题,并且假设我们的程序所有的组件都运行在一台 ...

  7. MySQL高级学习笔记(一):mysql简介、mysq linux版的安装(mysql 5.5)

    文章目录 MySQL简介 概述 mysql高手是怎样炼成的 mysq linux版的安装(mysql 5.5) 下载地址 拷贝&解压缩 检查工作 检查当前系统是否安装过mysql 检查/tmp ...

  8. Qt5.7中使用MySQL Driver

    Qt5.7中使用MySQL Driver 1.使用环境 Qt5.7的安装安装就已经带了MySQL Driver,只需要在安装的时候选择一下即可. 如果没有安装,可以采取自己编译的方式. 在Qt的源码包 ...

  9. MySQL, 创建一个只读用户和一个所有权限用户

    安装pasa需要配置mysql.基本知识学习一下 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html MySQL 为关系型数据库 ...

随机推荐

  1. HTML5与触摸界面

    习惯了开发典型的面向电脑端浏览器的网站在开发手机端网站或者移动App的时候面对很多新的问题,这些新的问题,在我看来或多或少会给浏览者在使用网站或App的时候带来不好的用户体验,对于一个产品级应用,用户 ...

  2. 【MVC 4】6.SportsSore:导航

     作者:[美]Adam Freeman      来源:<精通ASP.NET MVC 4> 前面的文章[MVC 4]5.SportsSore —— 一个真实的应用程序 建立了 Sports ...

  3. 【Android UI设计与开发】2.引导界面(二)使用ViewPager实现欢迎引导页面

    1.实现的效果 2.编码前的准备工作 ViewPager是Android3.0之后提供的新特性,所以要想让你的应用向下兼容就必须要android-support-v4.jar这个包的支持,这是一个来自 ...

  4. Trie树 & 01Trie

    指针版 #define MAXNUM 26 //定义字典树结构体 typedef struct Trie { bool flag;//从根到此是否为一个单词 Trie *next[MAXNUM]; } ...

  5. HDU 5047 推公式+别样输出

    题意:给n个‘M'形,问最多能把平面分成多少区域 解法:推公式 : f(n) = 4n(4n+1)/2 - 9n + 1 = (8n+1)(n-1)+2 前面部分有可能超long long,所以要转化 ...

  6. SpringBoot 快速入门

    本篇文章翻译来源为:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ 首先springboot ...

  7. SQLite 解决:Could not load file or assembly 'System.Data.SQLite ... 试图加载格式不正确的程序/or one of its dependencies. 找不到指定的模块。

     Could not load file or assembly 'System.Data.SQLite.dll' or one of its dependencies. 找不到指定的模块. 错误提示 ...

  8. jenkins配置记录(1)--添加用户权限

    前一阵子在线上部署了一套jenkins环境,作为线上代码发布平台使用.部署记录:http://www.cnblogs.com/kevingrace/p/5651427.html 下面重点记录下jenk ...

  9. MVC4 WebAPI POST数据问题

    api [HttpPost] public string PostAvartos(Test model) { if (model != null) { LoggerHelper.WriteInfo(m ...

  10. [4]Telerik Grid 简单使用方法

    1.columns <% Html.Telerik().Grid(Model) .Name("Orders") .Columns(columns => { //绑定列名 ...