type DB struct {
sync.RWMutex
Value interface{} // 值
Error error // 错误
RowsAffected int64 // 受影响的行
……
}
DB 包含当前数据库连接的信息。
Open 初始化一个新的db连接,需要先导入驱动程序(如:mysql 的驱动)。
func Open(dialect string, args ...interface{}) (db *DB, err error)
AddError 将 err 添加到数据库。
func (s *DB) AddError(err error) error
未完待续……
// 导入 mysql 驱动程序
import _ "github.com/go-sql-driver/mysql"
func main() {
// 初始化一个新的 db 连接
db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8mb4&parseTime=True&loc=Local")
}
GORM 已经封装了一些驱动程序,以便更容易记住驱动程序的导入路径,因此您可以使用:
import _ "github.com/jinzhu/gorm/dialects/mysql"
// import _ "github.com/jinzhu/gorm/dialects/postgres"
// import _ "github.com/jinzhu/gorm/dialects/sqlite"
// import _ "github.com/jinzhu/gorm/dialects/mssql"
AddError 将 err 添加到数据库(暂时没用过)。gorm 定义的 err 如下:
var (
// ErrRecordNotFound 返回一个“未找到记录错误”。仅在尝试使用结构查询数据库时发生;使用切片进行查询不会返回此错误
ErrRecordNotFound = errors.New("record not found") // 未找到记录
// 当您尝试使用无效SQL进行查询时,会发生ErrInvalidSQL
ErrInvalidSQL = errors.New("invalid SQL") // 无效SQL
// 尝试“提交”或“回滚”时发生 ErrInvalidTransaction
ErrInvalidTransaction = errors.New("no valid transaction") // 无有效事务
//当您尝试用`Begin启动事务时,ErrCantStartTransaction 表示无法启动事务
ErrCantStartTransaction = errors.New("can't start transaction") // 无法启动事务
// ErrUnaddressable不可寻址值
ErrUnaddressable = errors.New("using unaddressable value") // 使用不可修改的值
)
func IsRecordNotFoundError ¶
IsRecordNotFoundError 如果 err 包含 ErrRecordNotFound 错误,则返回true