import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"strings"
)
// 定義要被查詢的結(jié)構(gòu)體
// 字段和數(shù)據(jù)庫(kù)基本一致
type Email struct {
Id int
UserId string
Email string
Subscribe sql.NullInt64 // Subscribe 字段可能為null 所以使用sql.Null 開(kāi)頭的類型作為字段類型定義
}
func main() {
// 數(shù)據(jù)庫(kù)連接: 格式為: 用戶名:密碼@tcp(IP:端口)/庫(kù)名?charset=utf8
path := strings.Join([]string{"root", ":", "123", "@tcp(127.0.0.1:3306)/test?charset=utf8"}, "")
db, err := sql.Open("mysql", path)
if err != nil {
fmt.Println("conn error: ", err)
}
db.SetConnMaxLifetime(10) // 設(shè)置數(shù)據(jù)庫(kù)最大連接數(shù)
db.SetMaxOpenConns(10) // 設(shè)置數(shù)據(jù)最大閑置
// 普通插入方式
//res, err := db.Exec("INSERT INTO emails(user_id, email) VALUES (11, 'abc@qq.com')")
// 事務(wù)的方式來(lái)插入數(shù)據(jù)
tx, err := db.Begin()
ins, err := tx.Prepare("INSERT INTO emails(user_id, email) VALUES (?, ?)")
res, err := ins.Exec(132, "yangzhaoss")
fmt.Println()
if err == nil {
fmt.Println(res.LastInsertId()) // 獲取自增id
}else {
fmt.Println(err)
}
// 刪除操作
del, err := tx.Prepare("DELETE FROM emails WHERE user_id = ?")
if err == nil {
res, err = del.Exec(132)
tx.Commit()
}else {
fmt.Println(err)
}
// 查找操作
// 單行查詢 用QueryRow函數(shù)查詢唐责, 并且利用Scan將查詢結(jié)果賦值到對(duì)應(yīng)的對(duì)象中
// 多行查詢: 執(zhí)行Query函數(shù), 利用Next() 讀取每一行返回的結(jié)果务豺,并Scan賦值到相應(yīng)的對(duì)象中蹦狂。
// 對(duì)于數(shù)據(jù)庫(kù)中可能為Null的字段誓篱, 在結(jié)構(gòu)體中設(shè)置字段類型為sql.Null 開(kāi)頭的對(duì)應(yīng)類型
rows, err := db.Query("select * from emails")
var emails []Email
if err == nil {
for rows.Next() {
var email Email
err := rows.Scan(&email.Id, &email.UserId, &email.Email,&email.Subscribe)
if err != nil {
fmt.Println("Rows fail: ", err)
}
emails = append(emails, email)
}
// 對(duì)于可能為null的字段 要設(shè)置為 sql.Null 對(duì)應(yīng)的字段
}
for _, v := range emails {
fmt.Println(v.Id, v.UserId, v.Email, v.Subscribe)
}
}
golang操作mysql
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)富弦,“玉大人沟娱,你說(shuō)我怎么就攤上這事⊥蠊瘢” “怎么了济似?”我有些...
- 文/不壞的土叔 我叫張陵矫废,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我砰蠢,道長(zhǎng)蓖扑,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任台舱,我火速辦了婚禮律杠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘竞惋。我一直安慰自己柜去,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布拆宛。 她就那樣靜靜地躺著嗓奢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪浑厚。 梳的紋絲不亂的頭發(fā)上股耽,一...
- 那天,我揣著相機(jī)與錄音钳幅,去河邊找鬼物蝙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贡这,可吹牛的內(nèi)容都是我干的茬末。 我是一名探鬼主播,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼盖矫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了击奶?” 一聲冷哼從身側(cè)響起辈双,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柜砾,沒(méi)想到半個(gè)月后湃望,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡痰驱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年证芭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片担映。...
- 正文 年R本政府宣布,位于F島的核電站氢架,受9級(jí)特大地震影響傻咖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜岖研,卻給世界環(huán)境...
- 文/蒙蒙 一卿操、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧孙援,春花似錦害淤、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至邻辉,卻和暖如春溪王,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背值骇。 一陣腳步聲響...
- 正文 我出身青樓道伟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親使碾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜜徽,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 使用原則 庫(kù)自帶連接池,使用方不需自行實(shí)現(xiàn)票摇。*sql.DB 線程安全拘鞋,開(kāi)箱即用,屏弊了底層創(chuàng)建連接的實(shí)現(xiàn) Open...
- 封裝原因: 查看了很多網(wǎng)上提供的ORM類型的數(shù)據(jù)庫(kù)操作,覺(jué)得比較麻煩,需要提前配置很多的表結(jié)構(gòu)體,然后才能使用,對(duì)...
- 本文為轉(zhuǎn)載矢门,原文:Golang 學(xué)習(xí)筆記(10)—— mysql操作 go-sql-driver/mysql go...