GO读书笔记

《go web 编程》第四章 访问数据库:database/sq

2022-09-15  本文已影响0人  bycall

driver.Tx

事务处理一般就两个过程,递交或者回滚。数据库驱动里面也只需要实现这两个函数就可以

type Tx interface {
    Commit() error
    Rollback() error
}

这两个函数一个用来递交一个事务,一个用来回滚事务。

driver.Execer

这是一个 Conn 可选择实现的接口

type Execer interface {
    Exec(query string, args []Value) (Result, error)
}

如果这个接口没有定义,那么在调用 DB.Exec, 就会首先调用 Prepare 返回 Stmt,然后执行 Stmt 的 Exec,然后关闭 Stmt。

driver.Result

这个是执行 Update/Insert 等操作返回的结果接口定义


type Result interface {
    LastInsertId() (int64, error)
    RowsAffected() (int64, error)
}

LastInsertId 函数返回由数据库执行插入操作得到的自增 ID 号。

RowsAffected 函数返回 query 操作影响的数据条目数。

driver.Rows

Rows 是执行查询返回的结果集接口定义

type Rows interface {
    Columns() []string
    Close() error
    Next(dest []Value) error
}

Columns 函数返回查询数据库表的字段信息,这个返回的 slice 和 sql 查询的字段一一对应,而不是返回整个表的所有字段。

Close 函数用来关闭 Rows 迭代器。

Next 函数用来返回下一条数据,把数据赋值给 dest。dest 里面的元素必须是 driver.Value 的值除了 string,返回的数据里面所有的 string 都必须要转换成 [] byte。如果最后没数据了,Next 函数最后返回 io.EOF。

上一篇下一篇

猜你喜欢

热点阅读