I mention about the below func of ```database/sql``` package and I'm using 
golang 1.7.

func (db *DB) Query(query string, args ...interface{}) (*Rows, error) {...}


I'm using MySQL and handling query result like that code below, (there are 
some omissions.)


sql := "SELECT field1, field2 FROM t_xxx WHERE flg=?"
//1-1) added args parameter 
rows, err := ms.DB.Query(sql, 1)

values := make([]interface{}, 2)
scanArgs := make([]interface{}, 2)
for i := range values {
 scanArgs[i] = &values[i]
}

err = rows.Scan(scanArgs...)

//1-2) I expect that type of field1 is int64
val := reflect.ValueOf(values[0])
//val.Kind()==reflect.Int64


//------------------
//Next check
//------------------

//2-1) no args parameter 
rows1, err := ms.DB.Query(sql)

values2 := make([]interface{}, 2)
scanArgs2 := make([]interface{}, 2)
for i := range values2 {
 scanArgs2[i] = &values2[i]
}

err = rows2.Scan(scanArgs2...)

//2-2) I expect that type of field1 is int64
val := reflect.ValueOf(values2[0])
//But, result was not int, it was byte. and it can be asseted as string.
//val.Kind()==reflect.Slice ([]uint8)


When adding args to Query func, result type is OK, but without it, result 
type change into []byte.

Why, result type changed???



Thank you.

Harry

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to