日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

学会对mysql的增删改查_Go实现对MySQL的增删改查

發(fā)布時(shí)間:2025/3/12 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学会对mysql的增删改查_Go实现对MySQL的增删改查 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

開發(fā)環(huán)境:windows7 64位、編輯器是sublime text3。 直接添上代碼了,代碼中有注釋。 注:需要提前下載github.com/go-sql-driver/mysql,下面的程序才會(huì)運(yùn)行成功。 package main

import ( "database/sql" //這個(gè)感覺有點(diǎn)類似java中的java.sql.* "fmt" _ "github.com/go-sql-driver/mysql" //這個(gè)感覺類似于jdbc )

func main() { //主函數(shù),調(diào)用不同的方法 //Insert() //Delete() //Update() //Query() QueryWithParams() //QueryWithParam() }

//得到數(shù)據(jù)庫(kù)的連接,并將連接返回 func Init() (*sql.DB, error) { //返回類型有倆個(gè),第一個(gè)是數(shù)據(jù)庫(kù)的連接(指針),第二個(gè)是錯(cuò)誤類型 //得到數(shù)據(jù)庫(kù)的連接,"test"表示的是數(shù)據(jù)庫(kù)名稱 db, err := sql.Open("mysql", "root:dmj2010@tcp(localhost:3306)/test?charset=utf8") if err != nil { //err的值不是nil那么表示打開數(shù)據(jù)庫(kù)連接失敗 fmt.Println("打開數(shù)據(jù)庫(kù)連接失敗_" + err.Error()) return nil, err } return db, nil //返回的錯(cuò)誤類型是nil,表示成功得到數(shù)據(jù)庫(kù)連接 }

//向數(shù)據(jù)庫(kù)中插入數(shù)據(jù) func Insert() { //這個(gè)函數(shù)沒有參數(shù),也沒有返回值 db, err := Init() //得到數(shù)據(jù)庫(kù)連接

if err != nil { //if語句的判斷語句不用加括號(hào)

fmt.Println("得到數(shù)據(jù)庫(kù)連接有問題")

return

}

sql := "insert into user(name,age) values(?,?)"

stmt, err := db.Prepare(sql)

if err != nil {

fmt.Println("錯(cuò)誤——" + err.Error())

return

}

defer stmt.Close() //表示當(dāng)程序退出當(dāng)前所在的函數(shù)(即Insert())時(shí)關(guān)閉stmt

defer db.Close() //表示當(dāng)程序退出時(shí)當(dāng)前所在的函數(shù)(即Insert())時(shí)關(guān)閉數(shù)據(jù)庫(kù)連接db

fmt.Println("開始插入數(shù)據(jù)")

stmt.Exec("張三", 20) //設(shè)置參數(shù)并進(jìn)行插入數(shù)據(jù)

stmt.Exec("李四", 45) //設(shè)置參數(shù)并進(jìn)行插入數(shù)據(jù)

stmt.Exec("段幕", 36) //設(shè)置參數(shù)并進(jìn)行插入數(shù)據(jù)

fmt.Println("插入結(jié)束")

}

//刪除數(shù)據(jù) func Delete() { db, err := Init() if err != nil { fmt.Println("得到數(shù)據(jù)庫(kù)連接結(jié)果失敗——" + err.Error()) return } sql := "delete from user where id=?" stmt, err := db.Prepare(sql) if err != nil { fmt.Println("刪除失敗——" + err.Error()) return } defer stmt.Close() defer db.Close()

stmt.Exec(1) //設(shè)置參數(shù),即id的值為1

stmt.Exec(2) //設(shè)置參數(shù),即id的值為2

}

//更新數(shù)據(jù) func Update() { db, err := Init() if err != nil { fmt.Println("得到數(shù)據(jù)庫(kù)連接結(jié)果失敗——" + err.Error()) return } sql := "update user set name=?,age=? where id=?" stmt, err := db.Prepare(sql) if err != nil { fmt.Println("更新失敗——" + err.Error()) return } defer stmt.Close() defer db.Close()

stmt.Exec("木婉清", 123, 3)

stmt.Exec("曾小邪", 18, 4)

stmt.Exec("其二", 23, 5)

}

//查詢數(shù)據(jù) func Query() { db, err := Init() if err != nil { fmt.Println("得到數(shù)據(jù)庫(kù)連接結(jié)果失敗——" + err.Error()) return }

rows, err := db.Query("select * from user")

if err != nil {

fmt.Println("查詢失敗——" + err.Error())

return

}

for rows.Next() { //rows.Next()返回的是bool值

var id int //聲明id為int型

var name string //聲明name為string型

var age int //聲明age為int型

err := rows.Scan(&id, &name, &age)

if err != nil {

fmt.Println("rows.Scan失敗!——" + err.Error())

return

} //if

//fmt.Printf(....) 這個(gè)有點(diǎn)類似C中的printf(...)

fmt.Printf("id:%d name:%s age:%d \n", id, name, age) //%d表示顯示整形數(shù)值 %s表示顯示字符串

} //for

defer rows.Close()

defer db.Close()

}

//查詢數(shù)據(jù),有參數(shù)設(shè)置&&返回值有多行 func QueryWithParams() { db, err := Init() if err != nil { fmt.Println("得到數(shù)據(jù)庫(kù)連接結(jié)果失敗——" + err.Error()) return }

rows, err := db.Query("select * from user where age=?", 20)

if err != nil {

fmt.Println("查詢失敗——" + err.Error())

return

}

for rows.Next() { //rows.Next()返回的是bool值

var id int

var name string

var age int

err := rows.Scan(&id, &name, &age)

if err != nil {

fmt.Println("rows.Scan失敗!——" + err.Error())

return

} //if

//fmt.Printf(....) 這個(gè)有點(diǎn)類似C中的printf(...)

fmt.Printf("id:%d name:%s age:%d \n", id, name, age) //%d表示顯示整形數(shù)值 %s表示顯示字符串

} //for

defer rows.Close()

defer db.Close()

}

//查詢數(shù)據(jù),有參數(shù)設(shè)置&&返回值最多只有一行 func QueryWithParam() { db, err := Init() if err != nil { fmt.Println("得到數(shù)據(jù)庫(kù)連接結(jié)果失敗——" + err.Error()) return }

var id int

var name string

var age int

row := db.QueryRow("select * from user where id=?", 3)

err = row.Scan(&id, &name, &age)

if err != nil {

fmt.Println("查詢失敗——" + err.Error())

return

}

//fmt.Printf(....) 這個(gè)有點(diǎn)類似C中的printf(...)

fmt.Printf("id:%d name:%s age:%d \n", id, name, age) //%d表示顯示整形數(shù)值 %s表示顯示字符串

defer db.Close()

}

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的学会对mysql的增删改查_Go实现对MySQL的增删改查的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品一区二区三区新线路 | 能在线观看的av网站 | 日韩福利网 | 香蕉依人| 91人人草 | 国产乱国产乱300精品 | 麻豆导航 | 日日骑| 国产 欧美 日韩 一区 | av解说在线观看 | 男人天堂网在线 | 国产小视频在线免费观看 | 精品人妻伦九区久久aaa片 | 美女张开腿露出尿口 | 男女av在线 | 伊人看片 | 久爱视频在线 | 久操久 | 成年人在线免费观看视频网站 | 一区二区高清视频 | 国产免费av片在线 | 岛国av动作片 | 久久精品视频久久 | 自拍第一页 | 国产精品成人一区二区 | 国产精品一区二区三区线羞羞网站 | 亚洲在线观看免费 | 樱花电影最新免费观看国语版 | av亚洲在线观看 | 少妇资源 | 国产精品一区二区三区四区五区 | 欧美在线一二 | 中文字幕一级 | 色婷久久| 谁有av网址 | 亚洲av无码一区二区二三区 | 色综合天天综合网天天狠天天 | 美日韩视频 | 一区二区三区免费在线观看视频 | 久久精品视频8 | 亚洲av乱码久久精品蜜桃 | 亚洲欧洲成人精品久久一码二码 | 亚洲欧美色图在线 | 日韩欧美中文字幕一区二区 | 嫩草在线视频 | 夜夜激情 | 又紧又大又爽精品一区二区 | 99色这里只有精品 | 在线观看视频免费 | 可以看的av网站 | 久久精品人妻av一区二区三区 | 福利片在线观看 | 精品人妻一区二区三区含羞草 | 欧美日韩国产精品一区 | 日本黄色xxxx | 黄色av三级 | 欧美色图视频在线 | 免费在线观看你懂的 | 色香色香欲天天天影视综合网 | 双性娇喘浑圆奶水h男男漫画 | 曰韩精品 | 婷婷五月情 | 欧美,日韩,国产在线 | www国产亚洲精品 | 91久久久久一区二区 | 日b视频免费| 午夜精品久久久久久久99黑人 | 国产永久在线观看 | 午夜精品国产精品大乳美女 | 日本无遮挡边做边爱边摸 | 噼里啪啦国语版在线观看 | 国产丝袜久久 | 亚洲精品字幕在线观看 | 一级片在线免费观看 | 国产午夜精品福利视频 | 国产精品美女在线观看 | 欢乐谷在线观看免费播放高清 | 久久一级免费视频 | 在线无遮挡 | 中文字幕在线观看免费高清 | 国产在线观看免费高清 | 亚洲熟妇av乱码在线观看 | 国产尤物在线 | 日日夜夜网 | 国产精品激情偷乱一区二区∴ | 日本在线一级片 | 色综合天天综合网天天狠天天 | 欧美视频四区 | 国产寡妇亲子伦一区二区三区四区 | 网友自拍视频 | www.在线观看av | 网站黄色在线观看 | 一二三四区视频 | 99re这里只有精品在线观看 | 伊人精品| 亚欧视频在线观看 | 四虎图库 | 中文字幕一区二区在线播放 | 狠狠干狠狠干狠狠干 |