用Go-SQL-Driver訪問mysql數據庫


go語言提供了數據庫訪問的統一接口,可是本身本身的具體數據庫訪問驅動實現。
開源比較經常使用的有go-sql-driver/mysql(原來的go-mysql-driver)和mymysql
我我的比較傾向於go-sql-driver,實現規範,通用性強
Go-SQL-Driver是它的新名字,已經遷移到了gitbub,地址:https://github.com/Go-SQL-Driver/MySQL
安裝使用很簡單
$ go get github.com/Go-SQL-Driver/MySQL
就按裝到GOPATH下了
使用也簡單,拿他的例子:
新建一張表 html

CREATE TABLE `squareNum` (
  `number` int(11) NOT NULL,
  `squareNumber` int(11) NOT NULL,
  PRIMARY KEY (`number`)
)

數據庫操做 java

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/Go-SQL-Driver/MySQL"  //引入mysql驅動
)

func main() {
	/*DSN數據源名稱
		[username[:password]@][protocol[(address)]]/dbname[?param1=value1&paramN=valueN]
		user@unix(/path/to/socket)/dbname 
		user:password@tcp(localhost:5555)/dbname?charset=utf8&autocommit=true 
		user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname?charset=utf8mb4,utf8 
		user:password@/dbname 
		無數據庫: user:password@/
	*/
	db, err := sql.Open("mysql", "root:123456@tcp(192.168.1.203:3306)/test") //第一個參數數驅動名
	if err != nil {
		panic(err.Error())
	}
	defer db.Close()

	// 欲編譯語句,插入數據,這個是標準的go接口,因此只要標準sql,其餘數據庫通用的,只要換上面的驅動名
	stmtIns, err := db.Prepare("INSERT INTO squareNum VALUES( ?, ? )" ) // ? = 佔位符
	if err != nil {
		panic(err.Error())
	}
	defer stmtIns.Close() // main結束是關閉

	// Prepare statement for reading data
	stmtOut, err := db.Prepare("SELECT squareNumber FROM squareNum WHERE number = ?")
	if err != nil {
		panic(err.Error())
	}
	defer stmtOut.Close()

	// Insert square numbers for 0-24 in the database
	for i := 0; i < 25; i++ {
		_, err = stmtIns.Exec(i, (i * i)) // 執行插入
		if err != nil {
			panic(err.Error())
		}
	}

	var squareNum int // we "scan" the result in here

	// Query the square-number of 13
	err = stmtOut.QueryRow(13).Scan(&squareNum) // WHERE number = 13
	if err != nil {
		panic(err.Error())
	}
	fmt.Printf("The square number of 13 is: %d", squareNum)

	// Query another number.. 1 maybe?
	err = stmtOut.QueryRow(1).Scan(&squareNum) // WHERE number = 1
	if err != nil {
		panic(err.Error())
	}
	fmt.Printf("The square number of 1 is: %d", squareNum)
}

go語言的數據庫操做封裝很好,比java的簡單的多。o(∩∩)o...哈哈 mysql

用Go-SQL-Driver訪問mysql數據庫

相關文章
相關標籤/搜索