美文网首页
go 操作数据库

go 操作数据库

作者: chase_lwf | 来源:发表于2020-09-14 10:02 被阅读0次

内容

1 database/sql基本操作
2 gorm基本操作

1 database/sql

  • 初始化一个数据库连接
    sql包是go提供的原生的数据库操作接口,所以第一步需要引入相应数据库的驱动
import (
    "database/sql"

    _ "github.com/go-sql-driver/mysql" // 引入mysql驱动
)

func main() {
    dsn := "user:password@tcp(127.0.0.1:3306)/dbname"
    db, err := sql.Open("mysql", dsn)
    if err != nil {
        panic(err)
    }
    defer db.Close() // 注意这行代码要写在上面err判断的下面,如果open时,db对象没有初始成功,就调用了close,要报错
}
  • 初始化连接
    Open方法只是初始化了一个db对象,并没有进行连接,一种懒加载思想,待用到这个连接时在尝试去建立连接
// 尝试与数据库建立连接(校验dsn是否正确)
    err = db.Ping()
    if err != nil {
        return err
    }
    return nil
  • 进行增、删、改、查
增、删、改都通过Exec方法进行操作
func (db *DB) Exec(query string, args ...interface{}) (Result, error)
增,删除和更新一样的,编写相应sql即可
func insert() {
    sqlStr := "insert into user(name, age) values (?,?)"
    ret, err := db.Exec(sqlStr, "11", 11)
    if err != nil {
        return
    }
     // 获取插入id
    theID, err := ret.LastInsertId() 
    if err != nil {
        fmt.Printf("get lastinsert ID failed, err:%v\n", err)
        return
    }
    fmt.Printf("insert success, the id is %d.\n", theID)
}

查询:

查询单条数据
func queryRowDemo() error {
    sqlStr := "select id, name, age from user where id=?"
    var u user

    err := db.QueryRow(sqlStr, 1).Scan(&u.id, &u.name, &u.age)
    if err != nil {
        return err
    }
}

查询多条数据
func queryMultiRowDemo() error {
    sqlStr := "select id, name, age from user where id > ?"
    rows, err := db.Query(sqlStr, 0)
    if err != nil {
        return err
    }
    defer rows.Close()

    // 循环读取结果集中的数据
    for rows.Next() {
        var u user
        err := rows.Scan(&u.id, &u.name, &u.age)
        if err != nil {
            return err
        }
    }
}
  • prepare()进行sql预编译
func (db *DB) Prepare(query string) (*Stmt, error)
func prepareInsertDemo()  error {
    sqlStr := "insert into user(name, age) values (?,?)"
    stmt, err := db.Prepare(sqlStr)
    if err != nil {
        return err
    }
    defer stmt.Close()
    _, err = stmt.Exec("小王子", 18)
    if err != nil {
        return err
    }
    _, err = stmt.Exec("沙河娜扎", 18)
    if err != nil {
        return err
    }
}
  • 事务处理
func (db *DB) Begin() (*Tx, error)
func (tx *Tx) Commit() error
func (tx *Tx) Rollback() error

2 gorm 基本操作

相关文章

  • Go操作MySQL

    Go语言操作MySQL MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作...

  • Go操作MySQL

    MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作MySQL 连接 Go语...

  • 3.1 Go操作MySQL数据库

    3.1 Go操作MySQL数据库 安装go操作MySQL的驱动go get -u -v github.com/go...

  • Golang数据库操作增删改查

    go 连接mysql进行数据库操作 导入包,导入github那个驱动包是因为go本地的数据库操作需要用到那个驱动 ...

  • 21.连接MySQL

    MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 go文件不是同一个模块,关闭go...

  • gorose, 最像 laravel's eloquen

    简介 gorose(go orm), 一个小巧强悍的go语言数据库操作orm, 灵感来源于laravel的数据库操...

  • 《go web 编程》第四章 访问数据库:使用 Beego or

    beego orm 是一个 Go 进行 ORM 操作的库,它采用了 Go style 方式对数据库进行操作,实现了...

  • Go操作Mysql数据库

    1. 获取mysql驱动 Go操作数据库文档推荐

  • go - 数据库操作

    在工作之余需要进行api开发,记录下go学习的中的代码 引入 第三方和系统框架 定义结钩体,接口用于连接数据库 打...

  • 19年底36周:Go database/sql库-Go数据库操作

    一、简介 database/sql提供了Go访问和操作SQL数据库的方法。在Go语言中,使用sql.DB使用此类型...

网友评论

      本文标题:go 操作数据库

      本文链接:https://www.haomeiwen.com/subject/gmpoektx.html