Re: Issue with ODBC on 64 bit machine while using SQLUINTEGER and SQLINTEGER
Martin Evans <[email protected]>
| Newsgroups | gmane.comp.db.unixodbc.devel |
|---|---|
| Organization | Easysoft Limited |
| Message-ID | <[email protected]> |
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. > > Regards, > Faizan 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 -- Martin J. Evans Easysoft Limited http://www.easysoft.com > On Thu, Mar 27, 2008 at 2:58 PM, Nick Gorham <[email protected] > <mailto:[email protected]>> 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 > SQLBindParameter. > > > >SQLUINTEGER value; > >SQLBindParameter(sthdl,1,SQL > >_PARAM_INPUT,SQL_C_ULONG,SQL_INTEGER,00,0,&value,00,00); > > > >SQINTEGER indIdValue; > >SQLUINTEGER idValue; > >retCode = > >SQLBindCol(sthdl,1,SQL_C_ULONG,&idValue,sizeof(idValue),&indIdValue); > >and same in the case of out put SQLBindCol > > > >//steps followed are. > >SQLPrepare > >SQLBindParameter > >SQLExecute > >SQLBindCol > >SQLFetch > > > >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 > > > >Regards > >Faizan. > > > > > > > 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. > > -- > Nick _______________________________________________ unixODBC-dev mailing list [email protected] http://mail.easysoft.com/mailman/listinfo/unixodbc-dev