Skip to content

Commit f2f66e7

Browse files
committed
fixed int type convert
1 parent 1500aa5 commit f2f66e7

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

odbc.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -467,21 +467,29 @@ func (stmt *Statement) GetField(field_index int) (v interface{}, ftype int, flen
467467
}
468468
var fl C.SQLLEN = C.SQLLEN(field_len)
469469
switch int(field_type) {
470-
case C.SQL_BIT, C.SQL_INTEGER, C.SQL_SMALLINT, C.SQL_TINYINT:
471-
var value C.HANDLE
470+
case C.SQL_BIT:
471+
var value C.BYTE
472+
ret = C.SQLGetData(C.SQLHSTMT(stmt.handle), C.SQLUSMALLINT(field_index+1), C.SQL_C_BIT, C.SQLPOINTER(unsafe.Pointer(&value)), 0, &fl)
473+
if fl == -1 {
474+
v = nil
475+
} else {
476+
v = byte(value)
477+
}
478+
case C.SQL_INTEGER, C.SQL_SMALLINT, C.SQL_TINYINT:
479+
var value C.long
472480
ret = C.SQLGetData(C.SQLHSTMT(stmt.handle), C.SQLUSMALLINT(field_index+1), C.SQL_C_LONG, C.SQLPOINTER(unsafe.Pointer(&value)), 0, &fl)
473481
if fl == -1 {
474482
v = nil
475483
} else {
476-
v = value
484+
v = int(value)
477485
}
478486
case C.SQL_FLOAT, C.SQL_REAL:
479487
var value C.double
480488
ret = C.SQLGetData(C.SQLHSTMT(stmt.handle), C.SQLUSMALLINT(field_index+1), C.SQL_C_DOUBLE, C.SQLPOINTER(unsafe.Pointer(&value)), 0, &fl)
481489
if fl == -1 {
482490
v = nil
483491
} else {
484-
v = value
492+
v = float64(value)
485493
}
486494
case C.SQL_WCHAR, C.SQL_WVARCHAR, C.SQL_WLONGVARCHAR:
487495
value := make([]uint16, int(field_len)+8)

0 commit comments

Comments
 (0)