Go语言的 database/sql 包的一个 MySQL驱动。mysql
特性git
sql.RawBytes支持
环境要求github
安装golang
简单地使用 go tool 在shell中把安装包加到你的$GOPATHsql
1shell |
$ go get github.com/go-sql-driver/mysql数据库 |
使用安全
sql包的用法简洁明了:
一、创建链接
首先是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()并发
二、基本用法
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。