Re: mySQL and SQLDriverConnect
Nick Gorham <[email protected]>
| Newsgroups | gmane.comp.db.unixodbc.devel |
|---|---|
| Message-ID | <[email protected]> |
Igor Korot wrote: >Nick, > >-----Original Message----- > > >>From: Nick Gorham <[email protected]> >>Sent: Jun 20, 2008 8:36 AM >>To: Igor Korot <[email protected]> >>Cc: Development issues and topics for unixODBC <[email protected]> >>Subject: Re: [unixODBC-dev] mySQL and SQLDriverConnect >> >>Igor Korot wrote: >> >> >> >>>>> >>>>> >>>>> >>>>> >>>>By the way, when you say you explicitly call the non unicode function, >>>>do you mean you call SQLDriverConnectA, becaue with UNICODE defined >>>>SQLDriverConnect becomes SQLDreiverConnectW (as it does in windows) >>>> >>>> >>>> >>>> >>>retcode = SQLDriverConnect( m_hdbc, parentWnd, (SQLTCHAR FAR *)"DSN=test;", ...); >>> ^^^^^^^^^^^^^^ >>> >>>I am doing casting of the parameters. >>>In UNICODE version, this would become (SQLWCHAR FAR *). >>> >>>So, unless the linker is not smart, he should look at the proper signature of the >>>function. >>> >>> >>> >>> >>> >>Not entirly correct >> >>(SQLTCHAR FAR *)"DSN=test;" >> >>when UNICODE is defined, will create a SQLWCHAR * pointer, but the thing it points to will still be a char string; >> >>I think thats the problem, you are passing the address 8bit string into a function thats expecting a 16bit sequence of values. Casting the pointer to a pointer of another type will not alter the thing thats being pointed to. >> >>Remember C will do what you tell it to, even if thats not what you want it to do :-) >> >> > >Ok, it is very easy to check. ;-) >It is morning here and I'm at work. When I come home, I will enable ODBC logging and run my >program. Hopefully you are right, I was just banging my head over nothing and simply passing: >"DSN=test;" without casting should fix the issue. > > No, that sill wont work, you either need to pass a wide string, or force the use of the ansi function SQLWCHAR str[] = { 'D','S','N','='.''t','e','s','t',';',0 }; SQLDriverConnect( ... str, SQL_NTS, ... ); or SQLCHAR *str = "dsn=test;"; SQLDriverConnectA( ..., str, SQL_NTS, ... ); -- Nick Gorham Easysoft Limited http://www.easysoft.com, http://www.unixODBC.org _______________________________________________ unixODBC-dev mailing list [email protected] http://mail.easysoft.com/mailman/listinfo/unixodbc-dev