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。