From ec9a49656ed012a95175459498d6b8819a063771 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 19 Feb 2016 17:23:00 +0800 Subject: [PATCH] bug fixed go-xorm/xorm#357 --- db.go | 29 ++++++++++++++++++++++++++++- error.go | 2 -- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/db.go b/db.go index 169d8553..e518f14f 100644 --- a/db.go +++ b/db.go @@ -142,6 +142,12 @@ func (row *Row) ScanStructByName(dest interface{}) error { if row.err != nil { return row.err } + if !row.rows.Next() { + if err := row.rows.Err(); err != nil { + return err + } + return sql.ErrNoRows + } return row.rows.ScanStructByName(dest) } @@ -149,6 +155,12 @@ func (row *Row) ScanStructByIndex(dest interface{}) error { if row.err != nil { return row.err } + if !row.rows.Next() { + if err := row.rows.Err(); err != nil { + return err + } + return sql.ErrNoRows + } return row.rows.ScanStructByIndex(dest) } @@ -157,6 +169,12 @@ func (row *Row) ScanSlice(dest interface{}) error { if row.err != nil { return row.err } + if !row.rows.Next() { + if err := row.rows.Err(); err != nil { + return err + } + return sql.ErrNoRows + } return row.rows.ScanSlice(dest) } @@ -165,12 +183,21 @@ func (row *Row) ScanMap(dest interface{}) error { if row.err != nil { return row.err } + if !row.rows.Next() { + if err := row.rows.Err(); err != nil { + return err + } + return sql.ErrNoRows + } return row.rows.ScanMap(dest) } func (db *DB) QueryRow(query string, args ...interface{}) *Row { 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 { diff --git a/error.go b/error.go index 13c17925..640e6036 100644 --- a/error.go +++ b/error.go @@ -5,6 +5,4 @@ import "errors" var ( ErrNoMapPointer = errors.New("mp should be a map's pointer") ErrNoStructPointer = errors.New("mp should be a struct's pointer") - //ErrNotExist = errors.New("Not exist") - //ErrIgnore = errors.New("Ignore") )