我們這次來學習使用golang來連線mysql資料庫,並使用golang實現資料庫的crud操作。首先我們建立乙個golang的專案,並配置專案gopath,這一步可以參考我的部落格golang環境安裝&idea開發golang。
golang的專案環境搭建完成之後,我們還需要建立一張資料庫表。
為了能夠便於封裝從資料庫中獲取的資料,我們建立乙個golang結構,來封裝我們的資料。
我們建立乙個bean
包,然後在該包下建立乙個user.go
檔案。
user.go
package bean
type user struct
func
(user *user)
getid()
intfunc
(user *user)
setid
(id int
)func
(user *user)
getname()
string
func
(user *user)
setname
(name string
)func
(user *user)
getpassword()
string
func
(user *user)
setpassword
(password string
)
由於每次連線資料庫都需要獲取資料庫連線,所以我們直接將資料庫的連線操作封裝為乙個方法,這樣就可以不用每次都執行獲取連線的步驟了。
我們建立乙個util
包,在包下建立乙個initdb.go
檔案。
)//我們先將資料庫配置資訊定義成為常量
const
( username =
"root"
password =
"admin"
ip =
"127.0.0.1"
port =
"3306"
dbname =
"db_database08"
)//初始化資料庫連線,返回資料庫連線的指標引用
func
initdb()
*sql.db ,""
)//開啟資料庫,前者是驅動名,所以要匯入: _ "github.com/go-sql-driver/mysql"
db, err := sql.
open
("mysql"
, path)
if err !=
nil//設定資料庫最大連線數
db.setconnmaxlifetime(10
)//設定上資料庫最大閒置連線數
db.setmaxidleconns(5
)//驗證連線
if err := db.
ping()
; err !=
nil//將資料庫連線的指標引用返回
return db
}我們建立乙個insert
包,在該包下建立乙個insert.go
檔案
package main
import
("fmt"
"mysql/util"
)func
main()
//準備sql語句
sql :=
"insert into tb_user (`name`, `password`) values (?, ?)"
//對sql語句進行預處理
stmt, err := db.
prepare
(sql)
if err !=
nil result, err := stmt.
exec
("阿部多瑞"
,"123"
)if err !=
nil//提交事務
tx.commit()
//返回插入記錄的id
fmt.
println
(result.
lastinsertid()
)}
我們建立乙個select
包,在該包下建立乙個select.go
檔案
package main
import
("fmt"
"mysql/bean"
"mysql/util"
)func
main()
rows, err := stmt.
query()
if err !=
nilvar users [
]bean.user
for rows.
next()
var user bean.user
user.
setid
(id)
user.
setname
(name)
user.
setpassword
(password)
users =
(users, user)
} fmt.
println
(users)
}
我們建立乙個update
包,在該包下建立乙個update.go
檔案
package main
import
("mysql/util"
)func
main()
//準備sql語句
sql :=
"update tb_user set `password` = ? where `id` = ?"
//對sql語句進行預處理
stmt, err := db.
prepare
(sql)
if err !=
nil_
, err = stmt.
exec
("789",1
)if err !=
nil//提交事務
tx.commit()
}
我們建立乙個delete
包,在該包下建立乙個delete.go
檔案
package main
import
("mysql/util"
)func
main()
//準備sql語句
sql :=
"delete from tb_user where `id` = ?"
//對sql語句進行預處理
stmt, err := db.
prepare
(sql)
if err !=
nil_
, err = stmt.
exec(1
)if err !=
nil//提交事務
tx.commit()
}
golang連線mysql資料庫查詢
確認位址是否有效 err db.ping if err nil var id int name string 將查詢傳送到資料庫。像往常一樣,我們檢查錯誤 其次,只要有乙個開放的結果集 由行表示 底層連線就會繁忙,不能用於任何其他查詢。這意味著它在連線池中不可用。如果您使用row next 迭代所有...
Golang連線Redis資料庫
golang連線redis資料庫 golang連線資料庫,這裡博主推薦使用go redis這個庫,理由很簡單 連線資料庫的操作類似在資料庫裡面輸入命令 go redis的安裝方式go get v v小v,是輸出過程。一般情況下不帶 v什麼反饋都看不到。連線redis的方式package 順帶提一下,...
mysql資料匯出golang實現
這個mysql建表語句轉golang的struct工具挺好用的。mysql資料匯出為excel檔案,golang實現 install the package to your gopath with the go tool from shell go get u github.com go sql d...