@@ -334,23 +334,36 @@ func (r *Resultset) GetUintByName(row int, name string) (uint64, error) {
334
334
}
335
335
}
336
336
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 {
341
339
return 0 , err
340
+ } else {
341
+ return r .GetInt (row , column )
342
342
}
343
-
344
- return int64 (v ), nil
345
343
}
346
344
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 )
349
347
if err != nil {
350
348
return 0 , err
351
349
}
352
350
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
+ }
354
367
}
355
368
356
369
func (r * Resultset ) GetFloat (row , column int ) (float64 , error ) {
0 commit comments