Skip to content

Commit afda915

Browse files
author
flike
committed
bugfix[GetInt func]
1 parent 2689c7a commit afda915

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

mysql/resultset.go

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -334,23 +334,36 @@ func (r *Resultset) GetUintByName(row int, name string) (uint64, error) {
334334
}
335335
}
336336

337-
//!!only can get positive integer
338-
func (r *Resultset) GetInt(row, column int) (int64, error) {
339-
v, err := r.GetUint(row, column)
340-
if err != nil {
337+
func (r *Resultset) GetIntByName(row int, name string) (int64, error) {
338+
if column, err := r.NameIndex(name); err != nil {
341339
return 0, err
340+
} else {
341+
return r.GetInt(row, column)
342342
}
343-
344-
return int64(v), nil
345343
}
346344

347-
func (r *Resultset) GetIntByName(row int, name string) (int64, error) {
348-
v, err := r.GetUintByName(row, name)
345+
func (r *Resultset) GetInt(row, column int) (int64, error) {
346+
d, err := r.GetValue(row, column)
349347
if err != nil {
350348
return 0, err
351349
}
352350

353-
return int64(v), nil
351+
switch v := d.(type) {
352+
case uint64:
353+
return int64(v), nil
354+
case int64:
355+
return v, nil
356+
case float64:
357+
return int64(v), nil
358+
case string:
359+
return strconv.ParseInt(v, 10, 64)
360+
case []byte:
361+
return strconv.ParseInt(string(v), 10, 64)
362+
case nil:
363+
return 0, nil
364+
default:
365+
return 0, fmt.Errorf("data type is %T", v)
366+
}
354367
}
355368

356369
func (r *Resultset) GetFloat(row, column int) (float64, error) {

0 commit comments

Comments
 (0)