使用MySQL Go Driver可以輕松地連接到MySQL數據庫,並執行SQL查詢和更新操作。一般情況下都使用Go語言的標準庫中的database/SQL包來實現MySQL連接,以及使用Go語言的第三方庫來實現MySQL連接。
代碼如下:
package main
import (
"crypto/md5"
"database/sql"
"encoding/hex"
"fmt"
// 新手都會被這個_所迷惑,其實這個就是Go設計的巧妙之處,
// 我們在變量賦值的時候經常看到這個符號,它是用來忽略變量賦值的佔位符,那麽包引入用到這個符號也是相似的作用,
// 這兒使用_的意思是引入後面的包名而不直接使用這個包中定義的函數,變量等資源。
_ "github.com/go-sql-driver/mysql"
"time"
)
func checkErr(err error) {
if err != nil {
panic(err)
}
}
func main() {
//dsn 數據源名稱
//user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname?charset=utf8mb4,utf8
db, err := sql.Open("mysql", "root:zengzhihai@tcp(127.0.0.1:3306)/go_test?charset=utf8")
checkErr(err)
/**
* CREATE TABLE `test_go` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
name varchar(30) not null comment 'username',
password char(32) not null comment 'password',
other varchar(30) not null comment 'username',
`ctime` timestamp default current_timestamp comment '創建時間',
`utime` timestamp default '00-00-00 00:00:00' comment '修改時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 comment 'test';
*
*/
//插入數據
stmt, err := db.Prepare("insert test_go set name = ?,password = ?,other = ?,ctime = ?,utime = ?")
checkErr(err)
// 標準格式化時間
ctime := time.Now().Format("2006-01-02 15:04:05")
pwd := []byte("test")
// 密碼md5加密
p := md5.Sum(pwd)
// 執行插入
res, err := stmt.Exec("test1", hex.EncodeToString(p[:]), "test", ctime, ctime)
checkErr(err)
// 獲取最新插入的insertid
id, err := res.LastInsertId()
checkErr(err)
fmt.Println(id)
// 查詢數據
rows, err := db.Query("SELECT * FROM test_go")
checkErr(err)
for rows.Next() {
var id int
var name string
var password string
var other string
var ctime string
var utime string
err = rows.Scan(&id, &name, &password, &other, &ctime, &utime)
checkErr(err)
// 查詢列印結果集
fmt.Println(id)
fmt.Println(name)
fmt.Println(password)
fmt.Println(other)
fmt.Println(ctime)
fmt.Println(utime)
}
}