Golang連線MySQL資料庫之CRUD

2021-10-23 06:35:30 字數 4401 閱讀 1963

我們這次來學習使用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...