Re: VARCHAR, CHAR types changed ? - Mailing list pgsql-odbc
From | lothar.behrens@lollisoft.de |
---|---|
Subject | Re: VARCHAR, CHAR types changed ? |
Date | |
Msg-id | 438773BA.28272.54410F@localhost Whole thread Raw |
In response to | Re: VARCHAR, CHAR types changed ? ("Dave Page" <dpage@vale-housing.co.uk>) |
Responses |
Re: VARCHAR, CHAR types changed ?
|
List | pgsql-odbc |
Am 25 Nov 2005 um 14:35 hat Dave Page geschrieben: My query function first calls SQLExecDirect(hstmt, _query, SQL_NTS); I have changed this to do exactly the same as your sample and pass the length of the string. No way. As you have put together a complete sample application, I have tried this compiled with Open Watcom 1.3 and MS Visual C++ 6.0. Both do the same. They crash inside the call to SQLExecDirect. My registered ODBC driver DLL is 335.872 bytes and from 11.11.2005 08:29:42 With Open Watcom debugger, I found the crash inside ConfigDSN. Is there any change in the ordinals inside the PSQLODBCA.dll ? The same happens, if I rename the DLL filenames :-) Regards Lothar > > > > -----Original Message----- > > From: pgsql-odbc-owner@postgresql.org > > [mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of > > lothar.behrens@lollisoft.de > > Sent: 25 November 2005 13:21 > > To: pgsql-odbc@postgresql.org > > Subject: Re: [ODBC] VARCHAR, CHAR types changed ? > > > > I have tried to use ANSI driver. It crashes :-( > > > > My code to connect and setup a statement looks like this: > > > <snip code> > > > > > The code is simple console based, but my database classes encapsulate > > all ODBC > > CLI calls. The internal statement handle is reused. The table get's > > created and filled. > > > > Any ideas ? > > Well, I've tried the code below which is roughly as close as I can get > to what you posted (not having your query class), and it SQLExecDirect's > just fine here. Any thoughts on what might be significantly different > here?: > > Regards, Dave. > > #include <windows.h> > #include <sqlext.h> > #include <stdio.h> > > > int main(void) > { > HENV henv = NULL; // Env > Handle from SQLAllocEnv() > HDBC hdbc = NULL; // > Connection handle > HSTMT hstmt = NULL; // > Statement handle > UCHAR DSN[SQL_MAX_DSN_LENGTH] = "ansi"; // Data > Source Name buffer > UCHAR user[64] = "postgres"; // User > ID buffer > UCHAR* passwd = NULL; // > Password buffer > > SQLAllocEnv (&henv); > > SQLAllocConnect (henv, &hdbc); > > SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*) SQL_OV_ODBC3, 0); > > SQLSetConnectAttr(hdbc, > SQL_ATTR_ODBC_CURSORS, > SQL_CUR_USE_IF_NEEDED, 0); > > SQLConnect(hdbc, DSN, SQL_NTS, > user, SQL_NTS, > passwd, SQL_NTS); > > SQLSetConnectOption(hdbc, SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_ON); > > SQLAllocStmt (hdbc, &hstmt); > > SQLSetStmtOption(hstmt, SQL_ATTR_CONCURRENCY, SQL_CONCUR_ROWVER); > SQLSetStmtOption(hstmt, SQL_CURSOR_TYPE, SQL_CURSOR_KEYSET_DRIVEN); > > > > UCHAR buf1[] = "create table regressiontest (" > "test char(100) DEFAULT 'Nothing',\n" > "btest bool DEFAULT false, " > "btest1 bool DEFAULT false" > ");"; > UCHAR buf2[] = "insert into regressiontest (test) values('Nix')"; > UCHAR buf3[] = "insert into regressiontest (btest) values(true)"; > UCHAR buf4[] = "insert into regressiontest (btest1) values(true)"; > > > SQLExecDirect(hstmt, buf1, sizeof(buf1)); > SQLExecDirect(hstmt, buf2, sizeof(buf2)); > SQLExecDirect(hstmt, buf3, sizeof(buf3)); > SQLExecDirect(hstmt, buf4, sizeof(buf4)); > > // This statement crashes inside SQLExecDirect(...) > UCHAR buf5[] = "select test, btest, btest1 from regressiontest"; > SQLExecDirect(hstmt, buf5, sizeof(buf5)); > > // UCHAR buf6[] = "drop table regressiontest"; > // SQLExecDirect(hstmt, buf6, sizeof(buf6)); > > // Free the allocated statement handle > SQLFreeStmt (hstmt, SQL_DROP); > > // Free the allocated connection handle > SQLFreeConnect (hdbc); > > // Free the allocated ODBC environment handle > SQLFreeEnv (henv); > > return 0; > } > > -- Lothar Behrens | Rapid Prototyping ... Rosmarinstr 3 | 40235 Düsseldorf | www.lollisoft.de
pgsql-odbc by date: