Re: ODBCv3 help...

From: James Chin <jchin(at)openlinksw(dot)com>
To: pgsql-odbc(at)postgresql(dot)org
Subject: Re: ODBCv3 help...
Date: 2004-07-02 21:18:55
Message-ID: vsjbe0tups5uveftf3ul5bsbur4304vjv6@4ax.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

Eric,

After sending my last message, I recalled that you do have to set
SQL_ATTR_ODBC_VERSION. This is done before you allocate a connection
handle. ODBC 3.x Driver Managers and Drivers check the version of the
ODBC spec for which the application is written for. You specify this
with the SQLSetEnvAttr ODBC API call.

Modify your app as follows:


SQLHENV env;
SQLHDBC dbc;
SQLAllocHandle (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);

fprintf (stderr, "Allocated ENV\n");

/* Add the following.*/
SQLSetEnvAttr (env,
SQL_ATTR_ODBC_VERSION,
(SQLPOINTER) SQL_OV_ODBC3,
SQL_IS_UINTEGER);

SQLAllocHandle( SQL_HANDLE_DBC, env, &dbc );
fprintf (stderr, "Allocated DBC\n");

I'd still recommend using SQLError to help determine what the problem
is.

Regards,
James Chin
OpenLink Software Inc.
http://www.openlinksw.com
Product Weblogs:
Virtuoso: http://www.openlinksw.com/weblogs/virtuoso
UDA: http://www.openlinksw.com/weblogs/uda
Universal Data Access & Virtual Database Technology
On 1 Jul 2004 13:04:45 -0700, ericgolson(at)gmail(dot)com (Eric Olson)
wrote:

>my system is configured as follows:
>Red Hat 8, postgreSQL 7.4.3, psqlodbc-07.03.0200, and unixODBC-2.2.9.
>
>I have been trying to get the following very simple code snippet
>working but it always seg faults after connecting to the db....it
>connects then if I try to execute a sql statement it seg faults or in
>the below example just freeing the DBC handle will cause a seg
>fault...am I missing something?? with the v2 calls to alloc handle and
>free handle EVERYTHING works fine...I'm thinking maybe I didn't
>configure something properly to use ODBCv3?:
>
>#include "sql.h"
>#include "sqlext.h"
>#include "stdio.h"
>int main () {
>
> SQLHENV env;
> SQLHDBC dbc;
> SQLAllocHandle (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
>
> fprintf (stderr, "Allocated ENV\n");
>
> SQLAllocHandle( SQL_HANDLE_DBC, env, &dbc );
> fprintf (stderr, "Allocated DBC\n");
>
> SQLConnect( dbc,
> (SQLCHAR*) "erictest", SQL_NTS,
> (SQLCHAR* ) "olsoneg", SQL_NTS,
> (SQLCHAR*) NULL, SQL_NTS );
>
> fprintf (stderr, "Connected\n");
>
>
> SQLDisconnect( dbc );
>
> SQLFreeHandle (SQL_HANDLE_DBC, dbc);
>
> SQLFreeHandle (SQL_HANDLE_ENV, env);
>
>}
>
>
>However if I substitute with the V2 ODBC functions like that follows
>then everything works:
>#include "sql.h"
>#include "sqlext.h"
>#include "stdio.h"
>int main () {
>
> SQLHENV env;
> SQLHDBC dbc;
> SQLAllocEnv (&env);
>
> fprintf (stderr, "Allocated ENV\n");
>
> SQLAllocConnect (env, &dbc);
> fprintf (stderr, "Allocated DBC\n");
>
> SQLConnect( dbc,
> (SQLCHAR*) "erictest", SQL_NTS,
> (SQLCHAR* ) "olsoneg", SQL_NTS,
> (SQLCHAR*) NULL, SQL_NTS );
>
> fprintf (stderr, "Connected\n");
>
> SQLDisconnect( dbc );
>
> SQLFreeConnect (dbc);
>
> SQLFreeEnv (env);
>
>}
>
>
>Any help on why the V2 calls work but the V3 don't would be GREATLY
>appreciated...

In response to

Browse pgsql-odbc by date

  From Date Subject
Next Message scotty 2004-07-03 08:44:45 HI
Previous Message James Chin 2004-07-02 20:32:44 Re: ODBCv3 help...