2018-07-22 17:35:10

goweb-05-golang-操作数据库

使用数据库的一般步骤

sqlx官网

引入xxx

  1. 第三方包 import "github.com/jmoiron/sqlx"
  2. 驱动 import _ "github.com/go-sql-driver/mysql"

建立链接

//uid:pass@tcp(host:port)/dbname?charset=utf8&parseTime=true

//用户名:密码@tcp(主机:端口)/数据库名称?charset=utf8&parseTime=true

db, err = sqlx.Open(`mysql`, `root:root@tcp(127.0.0.1:3306)/news?charset=utf8&parseTime=true`)

测试链接

err = db.Ping()

查询数据

单个查询

package main
import (
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "github.com/jmoiron/sqlx"
)
//Class db class
type Class struct {
    ID   int
    Name string
    Desc string
}
func main() {
    db, err := sqlx.Open(`mysql`, `root:root@tcp(127.0.0.1:3306)/news?charset=utf8&parseTime=true`)
    mod := &Class{}
    //查询一条数据
    //错误信息 = db.Get(要保存数据的变量的指针,`sql语句`,参数...)
    err = db.Get(mod, `select * from class limit 1`)
    fmt.Println(mod, err)
}

查询集合

package main
import (
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "github.com/jmoiron/sqlx"
)
//Class db class
type Class struct {
    ID   int
    Name string
    Desc string
}
func main() {
    db, err := sqlx.Open(`mysql`, `root:root@tcp(127.0.0.1:3306)/news?charset=utf8&parseTime=true`)
    mods := make([]Class, 0)
    //查询多条数据
    //错误信息 = db.Select(要保存数据的变量的指针,`sql语句`,参数...)
    err = db.Select(&mods, `select * from class`)
    fmt.Println(&mods, err)
}

操作数据

添加数据

//操作结果, 错误信息 := db.Exec(`sql语句`,参数...)
//result, err := db.Exec("insert into class(`name`,`desc`) values(?,?)", `名称`, `描述description`)
result, err := db.Exec("insert into class(`name`,`desc`) values(?,?)", `名称`, `描述description`)
fmt.Println(err)
// 如果是insert数据 则LastInsertId 返回插入的 id
fmt.Println(result.LastInsertId())
// 修改和删除 RowsAffected 返回到底影响了多少条数据
fmt.Println(result.RowsAffected())

修改数据

//修改数据
result, err := db.Exec("update class set `desc`= ?", `描述 描述`)//警告
fmt.Println(err)
// 如果是insert数据 则LastInsertId 返回插入的 id
fmt.Println(result.LastInsertId())
// 修改和删除 RowsAffected 返回到底影响了多少条数据
fmt.Println(result.RowsAffected())

删除数据

//删除数据
result, err := db.Exec("delete from class where id = ?", 4) //警告
fmt.Println(err)
// 如果是insert数据 则LastInsertId 返回插入的 id
fmt.Println(result.LastInsertId())
// 修改和删除 RowsAffected 返回到底影响了多少条数据
fmt.Println(result.RowsAffected())

本文链接:https://www.paishouba.com/post/goweb-05.html

-- EOF --

Comments