使用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) } }