Golang中如何對MySQL進行操作詳解

2022-09-25 22:27:16 字數 1720 閱讀 1301

前言

golang官方並沒有提供資料庫驅動,但通過database/sql/driver包來提供了實現驅動的標準介面。可以在github上找到很多開源的驅動。

其中go-sql-driver/mysql是乙個比較推薦的驅動,其完全支援database/sql介面。

使用這個驅動, 在專案裡import進:

)在正式使用database/sql包之前,首先得明白sql.db並不代表乙個資料庫連線,它並不會與資料庫建立任何連線,也不會驗證引數的合法性,要想知道dsn的合法性,需使用sql.db例項(比如db)db.ping() 方法, 如下:

err = db.ping()

if err != nil

使用sql.open()方法即可獲得乙個sql.db例項。需要注意的zpmctqq是,sql.db的設計就是用來作為長連線使用的,不應該在專案裡頻繁的進行open()與close(),提倡的做法是宣告乙個全域性的sql.db例項, 將其復用起來。即只open()一次,使用直到程式結束任務。

拿到sql.db例項之後,就可以對資料庫進行操作了。

在運算元據庫時,推薦做法是使用db.prepare()對sql語句進行預編譯,這樣具有較高的安全性,可在一定程度上避免諸如sql注入這樣的攻擊手段。

一些示例:

/*查詢操作

*/stmt, err := db.prepare("select `user_name` from `users` where `id` = ?")

defer stmt.close()

if err !程式設計客棧= nil

var username string

//scan() 將結果複製到username

err = stmt.queryrow(1).scan(&username)

fmt.println(username)

/* 多行結果

*/stmt, err := db.prepare("select `user_name` from `users` where `age` = ?")

defer stmt.close()

if err != nil

rows, err := stmt.query(年齡)

if err != nil

for rows.next() }/*

插入操作

*/stmt, err := db.prepare("insert into `users` (`user_name`, `age`) values(?, ?)")

defer stmt.close()

if err != nil

stmt.exec("名字",年齡)

/*事務*/

tx, err := db.begin()

if err != nil

defer tx.rollback()

stmt, err := db.prepare("")

defer stmt.close()

if err != nil

stmt.exec()

err = tx.commit()

if err != nil

總結本文標題: golang中如何對mysql進行操作詳解

本文位址: /shujuku/mysql/254126.html

golang 對mysql的增刪改查

defer db.close 關閉連線 return db 傳入資料庫連線,需要查詢的行 查詢一條資料 func queryone db sql.db,id int 表示指標下的值 fmt.println use 查詢多條資料 func querymulti db sql.db,id int fmt...

golang 對mysql資料庫的常用操作

匯入包 連線資料 db,err sql.open mysql root 123456789 mydb?charset utf8 if err nil查詢資料 var id int var username,password string rows,err db.query select from m...

在Golang中如何獲取DNS記錄

使用golang獲取網域名稱的dns記錄,包括a cname等型別.方案1 官方net包 只舉例獲取cname型別的解析記錄,其他型別大同小異.func cname src string dst string,err error 官方net包呼叫的是系統api,所以在不同的系統上可能有不同的結果,我...