diff --git a/odbc.go b/odbc.go index 09b3d11..4027d9d 100644 --- a/odbc.go +++ b/odbc.go @@ -265,7 +265,7 @@ func (conn *Connection) Close() *ODBCError { } func (stmt *Statement) RowsAffected() (int, *ODBCError) { - var nor C.SQLINTEGER + var nor C.SQLLEN ret := C.SQLRowCount(C.SQLHSTMT(stmt.handle), &nor) if !Success(ret) { err := FormatError(C.SQL_HANDLE_STMT, stmt.handle, int(ret)) @@ -421,14 +421,14 @@ func (stmt *Statement) FetchOne() (*Row, *ODBCError) { } func (stmt *Statement) GetField(field_index int) (v interface{}, ftype int, flen int, err *ODBCError) { - var field_type C.int - var field_len C.int + var field_type C.SQLLEN + var field_len C.SQLLEN var ll C.SQLSMALLINT - ret := C.SQLColAttribute(C.SQLHSTMT(stmt.handle), C.SQLUSMALLINT(field_index+1), C.SQL_DESC_CONCISE_TYPE, C.SQLPOINTER(unsafe.Pointer(uintptr(0))), C.SQLSMALLINT(0), &ll, C.SQLPOINTER(unsafe.Pointer(&field_type))) + ret := C.SQLColAttribute(C.SQLHSTMT(stmt.handle), C.SQLUSMALLINT(field_index+1), C.SQL_DESC_CONCISE_TYPE, C.SQLPOINTER(unsafe.Pointer(uintptr(0))), C.SQLSMALLINT(0), &ll, &field_type) if !Success(ret) { debugPrint("GetFiled type Error") } - ret = C.SQLColAttribute(C.SQLHSTMT(stmt.handle), C.SQLUSMALLINT(field_index+1), C.SQL_DESC_LENGTH, C.SQLPOINTER(unsafe.Pointer(uintptr(0))), C.SQLSMALLINT(0), &ll, C.SQLPOINTER(unsafe.Pointer(&field_len))) + ret = C.SQLColAttribute(C.SQLHSTMT(stmt.handle), C.SQLUSMALLINT(field_index+1), C.SQL_DESC_LENGTH, C.SQLPOINTER(unsafe.Pointer(uintptr(0))), C.SQLSMALLINT(0), &ll, &field_len) if !Success(ret) { debugPrint("GetFiled len Error") } @@ -452,12 +452,12 @@ func (stmt *Statement) GetField(field_index int) (v interface{}, ftype int, flen } case C.SQL_WCHAR, C.SQL_WVARCHAR, C.SQL_WLONGVARCHAR: value := make([]uint16, int(field_len)+8) - ret = C.SQLGetData(C.SQLHSTMT(stmt.handle), C.SQLUSMALLINT(field_index+1), C.SQL_C_WCHAR, C.SQLPOINTER(unsafe.Pointer(&value[0])), C.SQLINTEGER(int(field_len)+4), &fl) + ret = C.SQLGetData(C.SQLHSTMT(stmt.handle), C.SQLUSMALLINT(field_index+1), C.SQL_C_WCHAR, C.SQLPOINTER(unsafe.Pointer(&value[0])), C.SQLLEN(int(field_len)+4), &fl) s := UTF16ToString(value) v = s default: value := make([]byte, int(fl)+2) - ret = C.SQLGetData(C.SQLHSTMT(stmt.handle), C.SQLUSMALLINT(field_index+1), C.SQL_C_CHAR, C.SQLPOINTER(unsafe.Pointer(&value[0])), C.SQLINTEGER(int(field_len)+4), &fl) + ret = C.SQLGetData(C.SQLHSTMT(stmt.handle), C.SQLUSMALLINT(field_index+1), C.SQL_C_CHAR, C.SQLPOINTER(unsafe.Pointer(&value[0])), C.SQLLEN(int(field_len)+4), &fl) s := string(value[0:]) v = s debugPrint("default type", value, fl, s) @@ -554,14 +554,14 @@ func (stmt *Statement) BindParam(index int, param interface{}) *ODBCError { StrLen_or_IndPt = 0 case reflect.Complex64, reflect.Complex128: case reflect.String: - var slen C.SQLUINTEGER = C.SQLUINTEGER(len(v.String())) + var slen C.SQLULEN = C.SQLULEN(len(v.String())) ParameterType = C.SQL_VARCHAR ValueType = C.SQL_C_CHAR s := []byte(v.String()) ParameterValuePtr = C.SQLPOINTER(unsafe.Pointer(&s[0])) ColumnSize = slen - BufferLength = C.SQLINTEGER(slen + 1) - StrLen_or_IndPt = C.SQLINTEGER(slen) + BufferLength = C.SQLLEN(slen + 1) + StrLen_or_IndPt = C.SQLLEN(slen) default: debugPrint("Not support type", v) }