学会对mysql的增删改查_Go实现对MySQL的增删改查
開發(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python插件化设计_Python打造
- 下一篇: mysql越筛越少_面试官:为什么SEL