This commit is contained in:
Lunny Xiao 2016-02-19 17:23:00 +08:00
parent 0c32ca567a
commit ec9a49656e
2 changed files with 28 additions and 3 deletions

29
db.go
View File

@ -142,6 +142,12 @@ func (row *Row) ScanStructByName(dest interface{}) error {
if row.err != nil { if row.err != nil {
return row.err return row.err
} }
if !row.rows.Next() {
if err := row.rows.Err(); err != nil {
return err
}
return sql.ErrNoRows
}
return row.rows.ScanStructByName(dest) return row.rows.ScanStructByName(dest)
} }
@ -149,6 +155,12 @@ func (row *Row) ScanStructByIndex(dest interface{}) error {
if row.err != nil { if row.err != nil {
return row.err return row.err
} }
if !row.rows.Next() {
if err := row.rows.Err(); err != nil {
return err
}
return sql.ErrNoRows
}
return row.rows.ScanStructByIndex(dest) return row.rows.ScanStructByIndex(dest)
} }
@ -157,6 +169,12 @@ func (row *Row) ScanSlice(dest interface{}) error {
if row.err != nil { if row.err != nil {
return row.err return row.err
} }
if !row.rows.Next() {
if err := row.rows.Err(); err != nil {
return err
}
return sql.ErrNoRows
}
return row.rows.ScanSlice(dest) return row.rows.ScanSlice(dest)
} }
@ -165,12 +183,21 @@ func (row *Row) ScanMap(dest interface{}) error {
if row.err != nil { if row.err != nil {
return row.err return row.err
} }
if !row.rows.Next() {
if err := row.rows.Err(); err != nil {
return err
}
return sql.ErrNoRows
}
return row.rows.ScanMap(dest) return row.rows.ScanMap(dest)
} }
func (db *DB) QueryRow(query string, args ...interface{}) *Row { func (db *DB) QueryRow(query string, args ...interface{}) *Row {
rows, err := db.Query(query, args...) rows, err := db.Query(query, args...)
return &Row{rows, err} if err != nil {
return &Row{nil, err}
}
return &Row{rows, nil}
} }
func (db *DB) QueryRowMap(query string, mp interface{}) *Row { func (db *DB) QueryRowMap(query string, mp interface{}) *Row {

View File

@ -5,6 +5,4 @@ import "errors"
var ( var (
ErrNoMapPointer = errors.New("mp should be a map's pointer") ErrNoMapPointer = errors.New("mp should be a map's pointer")
ErrNoStructPointer = errors.New("mp should be a struct's pointer") ErrNoStructPointer = errors.New("mp should be a struct's pointer")
//ErrNotExist = errors.New("Not exist")
//ErrIgnore = errors.New("Ignore")
) )