go 连接数据库,增删改查
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
type User struct {
Id int `json:"id"`
Name string `json:"name"`
Gold float64 `json:"gold"`
}
var db *sql.DB
func initDB() (err error) {
fmt.Println("测试数据库连接")
db, err = sql.Open("mysql", "root:@tcp(localhost:3306)/godb?charset=utf8mb4&parseTime=True")
if err != nil {
fmt.Println(err)
}
err = db.Ping()
if err != nil {
fmt.Println(err)
} else {
fmt.Println("链接成功")
}
return err
}
func insertData() {
sqlStr := "insert into user (id,name,gold) values (?, ?, ?)"
res, err := db.Exec(sqlStr, 10, "zhangsan", 6.66)
if err != nil {
fmt.Println(err)
return
}
theId, err := res.LastInsertId()
fmt.Println("新增数据的id:", theId)
}
func updateData(name string, gold float64) {
sqlStr := "update user set name = ? , gold = ? where id = 3"
res, err := db.Exec(sqlStr, name, gold)
if err != nil {
fmt.Println(err)
return
}
rows, err := res.RowsAffected()
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("更新成功,更新的行数:==%v", rows)
}
func deleteData(id int) {
sqlStr := "delete from user where id = ?"
res, err := db.Exec(sqlStr, id)
if err != nil {
fmt.Println(err)
return
}
rows, err := res.RowsAffected()
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("删除成功,删除的行数:==%v\n", rows)
}
func queryOneRow() {
sqlStr := "select * from user where id = ?"
var u User
err := db.QueryRow(sqlStr, 3).Scan(&u.Id, &u.Name, &u.Gold)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("user===%v", u)
}
func queryManyRow() {
sqlStr := "select * from user where id > ?"
rows, err := db.Query(sqlStr, 0)
defer rows.Close()
if err != nil {
fmt.Println(err)
return
}
for rows.Next() {
var u User
err := rows.Scan(&u.Id, &u.Name, &u.Gold)
if err != nil {
fmt.Println(err)
break
}
fmt.Printf("user: == %v \n", u)
}
}
func main() {
initDB()
defer db.Close()
queryManyRow()
deleteData(10)
queryManyRow()
}