学习golang(day 14)- mysql(CRUD) 2022-05-30 12:02:00 编程 golang 暂无评论 519 次阅读 2495字 修改时间:2022-06-04 12:08:05 #mysql(CRUD) 简单了解下crud的使用方式,以下使用的方式为执行原生sql语句,插入、更新、删除,都用 `Exce` 方法 查询方法: QueryRow 查询一条,Query 查询多条记录 Talk is cheap,show me the code **示例** ```go package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "time" ) // 全局变量DB var db *sql.DB func initDB()(err error) { dsn := "root:root123@tcp(127.0.0.1:3306)/go_db?charset=utf8mb4&parseTime=True" // 不会校验账号密码是否正确 // 注意,这里不要使用 :=, 我们是全局变量赋值,让后在main中使用全局变量 db db,err = sql.Open("mysql", dsn) if err != nil { return err } // 最大连接时长 db.SetConnMaxLifetime(time.Minute * 3) // 最大连接数 db.SetMaxOpenConns(10) // 最大空闲数 db.SetMaxIdleConns(10) // 这里才会与数据库建立连接,校验dsn的账号密码 err = db.Ping() if err != nil { return err } return nil } func insert()(int64,error){ s := "insert into user_test(username,password) values (?,?)" r, err := db.Exec(s, "zhangsan", "123456") if err != nil { return 0,err } id, err := r.LastInsertId() if err != nil { return 0,err } fmt.Println("插入成功,ID=",id) return id,err } type User struct { id int username string password string } // 查询单行 func queryOneRow(){ s := "select * from user_test where id = ?" var u User err := db.QueryRow(s, 1).Scan(&u.id, &u.username, &u.password) if err != nil { fmt.Println(err) }else { fmt.Println(u) } } // 查询多行 func queryManyRow() { s := "select * from user_test" var u User query, err := db.Query(s) if err != nil { fmt.Println(err) }else { for query.Next(){ err := query.Scan(&u.id, &u.username, &u.password) if err != nil { fmt.Println(err) } fmt.Println(u) } } } // 更新用户 func updateUser() { s := "update user_test set username = ? , password = ? where id = ?" r, err := db.Exec(s, "zhangsan1", "1234567",1) if err != nil { fmt.Println(err) } affected, err := r.RowsAffected() if err != nil { fmt.Println("更新数据失败:",err) } fmt.Println("更新成功,受影响行数:",affected) } // 删除用户 func deleteUser() { s := "delete from user_test where id = ?" r, err := db.Exec(s, 1) if err != nil { fmt.Println(err) } affected, err := r.RowsAffected() if err != nil { fmt.Println("删除数据失败:",err) } fmt.Println("删除成功,受影响行数:",affected) } func main() { err := initDB if err() != nil { fmt.Println(err()) }else{ fmt.Println("初始化成功") } //insert() //queryOneRow() //queryManyRow() //updateUser() deleteUser() } ``` 标签: golang
评论已关闭