首頁  >  文章  >  後端開發  >  golang mysql操作介紹

golang mysql操作介紹

尚
轉載
2020-02-26 17:39:252972瀏覽

Go(又稱Golang)是Google開發的靜態強型別、編譯型、並髮型,並具有垃圾回收功能的程式語言。下面就來由go入門教學欄位介紹一些關於mysql的操作。

golang mysql操作介紹

go操作mysql資料庫,用的函式庫是go-sql-driver/mysql,安裝直接go get

go get -u github.com/go-sql-driver/mysql

sql.DB

DB型別可用的函式有:

1、Query(c string, args interface{} …) (*Rows, error),常用於SELECT語句

2、Exec(c string, args interface{} …) (*Rows, error),常用與UPDATE和INSERT

3、Prepare(c string) (*Stmt, error),其他語句,也可以用來執行上述語句,傳回Stmt指標

sql.Stmt

#Stmt是準備好的語句,可以執行資料庫語句運算,常用函數有:

Exec(args interface{} …) (Result, error),給定參數並執行準備好的語句,然後傳回語句的總結果

//...
	stmt, err := db.Perpare("INSERT INTO User(user,pwd) VALUES (?, ?)")
	if err != nil {
		panic(err)
	}
	defer stmt.Close()
	_, err := stmt.Exec("laoli", "123456")
	if err != nil {
		panic(err)
	}
//...
//...
	stmt, err := db.Perpare("DELETE FROM User")
	if err != nil {
		panic(err)
	}
	defer stmt.Close()
	_, err := stmt.Exec()
	if err != nil {
		panic(err)
	}

Query(args interface{} …) ( *Rows, error),給定參數並執行準備好的語句,傳回行結果,比方說SELECT操作就必須用這個函數呼叫。

sql.Rows

Rows是sql語句執行傳回的表,Rows會佔用緩存,Rows.Next()裡,如果傳回false,則會自動釋放快取.
看一下原始碼:

// 源码
func (rs *Rows) Next() bool {
	var doClose, ok bool
	withLock(rs.closemu.RLocker(), func() {
		doClose, ok = rs.nextLocked()
	})
	if doClose {
		rs.Close() //在这里释放掉了
	}
	return ok
}

範例:

package main

import (
	"database/sql"
	_ "github.com/go-sql-driver/mysql"
)

var db *sql.DB
func mian() {
	db = sql.Open("mysql", "root:123456@tcp(127.0.0.1)/test")
	if err := db.Ping(); err != nil {
		panic(err)
	}
}

func Insert() {
	_, err := db.Exec("INSERT INTO User(user, pwd) VALUE (?, ?)", "laowang", "123456")
	if err != nil {
		panic(err)
	}
}

func SelectRow() {
	rows, err := db.Query("SELECT * FROM User WHERE user=?", "laowang")
	if err != nil {
		panic(err)
	}
	//defer rows.Close() //如果后面代码没有循环调用rows.Next(),就需要手动在这里释放一下,不然会一直占用缓存
	var user string
	var pwd string
	for rows.Next() {
		row.Scan(&user, &pwd)
	}
	print(user, pwd)
}

更多go語言知識請關注php中文網go語言教學欄位。

以上是golang mysql操作介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除