Re: VARCHAR, CHAR types changed ?

From: "Dave Page" <dpage(at)vale-housing(dot)co(dot)uk>
To: <lothar(dot)behrens(at)lollisoft(dot)de>, <pgsql-odbc(at)postgresql(dot)org>
Subject: Re: VARCHAR, CHAR types changed ?
Date: 2005-11-25 14:35:13
Message-ID: E7F85A1B5FF8D44C8A1AF6885BC9A0E4E7E390@ratbert.vale-housing.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

> -----Original Message-----
> From: pgsql-odbc-owner(at)postgresql(dot)org
> [mailto:pgsql-odbc-owner(at)postgresql(dot)org] On Behalf Of
> lothar(dot)behrens(at)lollisoft(dot)de
> Sent: 25 November 2005 13:21
> To: pgsql-odbc(at)postgresql(dot)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;
}

Responses

Browse pgsql-odbc by date

  From Date Subject
Next Message lothar.behrens 2005-11-25 19:27:38 Re: VARCHAR, CHAR types changed ?
Previous Message lothar.behrens@lollisoft.de 2005-11-25 13:20:49 Re: VARCHAR, CHAR types changed ?