[unixODBC-dev] Issue with ODBC on 64 bit machine while using SQLUINTEGER and SQLINTEGER
martin.evans at easysoft.com
Thu Mar 27 11:04:20 GMT 2008
qureshifaizan faiz wrote:
> Hi nick,
> Thanks for the reply.please find the attached sample code
> along with the sample table description to give you a bit
> of more sight.I am very grateful for your interest in this
> issue. Waiting for your reply,guys because this code
> works in 32 bit machine iam not able to find the problem.
> why it is not working on a 64 bit machine.
How are you compiling your code? Perhaps your MySQL driver was compiled
with SIZEOF_LONG = 8 and your code is compiled with SIZEOF_LONG=4 ! Only
guessing as the unixODBC sql* header files test SIZEOF_LONG but nothing
is recorded in unixODBC itself to say how it was compiled. That means
you can compile unixODBC with SIZEOF_LONG = 8, your driver with
SIZEOF_LONG=4 and your app with SIZEOF_LONG=xx and they won't work together.
Martin J. Evans
> On Thu, Mar 27, 2008 at 2:58 PM, Nick Gorham <nick at lurcher.org
> <mailto:nick at lurcher.org>> wrote:
> qureshifaizan faiz wrote:
> >Hello Freinds,
> >Thanks for the reply.Take this simple example
> >"select ID from TEST_TABLE where TEST_VALUE = ?"
> >This query works fine in CLI using mysql 5.1.
> >But in the application when i EXECUTE this query iam unable to
> fetch the
> >data using the SQLFetch and it returns DB_NO_DATA with a result
> code 100 or
> >some times gives a junk value.
> >The procedure i have followed is as follows.
> >i have used SQLUINTEGER for the input parameter in case of
> >SQLUINTEGER value;
> >SQINTEGER indIdValue;
> >SQLUINTEGER idValue;
> >retCode =
> >and same in the case of out put SQLBindCol
> >//steps followed are.
> >Iam executing this on a 64 bit machine with mysql 5.1.
> >But the same code works fine on a 32 bit machine with mysql4.0.
> >Iam not getting clue what the problem is.I will be very grateful
> if you
> >could help
> >me solve this problem
> The sample code looks fine, assuming sizeof( SQLUINTEGER ) == 4 as it
> should. I would check with the MyODBC folk, as none of the values in the
> SQLBindParameter/SQLBindCol are altered by unixODBC, and are passed onto
> the driver.
> Just one thing, the indValue should be a SQLLEN type, and there are two
> incompatible definitions of that, but again, in this case its between
> the ap and the driver, the DM doesn't get involved. Even if the size was
> wrong, as long as it didn;t end up being -1 (SQL_NULL_DATA) the driver
> should ignore the length for fixed length type like a integer.
More information about the unixODBC-dev