Thread: ODBC string insert problem

ODBC string insert problem

From
Peter Andrews
Date:
I am unable to insert the following string:

40'S?

into a varchar field through my ODBC driver.  The statement:

insert into test values('40\'S?');

works perfectly using psql, but when I execute it through the ODBC
driver, I get the following error message:

parse error at or near ""

In fact, my ODBC driver seems to do this whenever I attempt to insert a
string with a question mark after a single quote.  I am using PostgreSQL
6.4.2 and the Insight ODBC driver version 6.40.0004.  If anyone has run
into this before, I would greatly apprciate your help.

Peter Andrews


Re: [INTERFACES] ODBC string insert problem

From
Byron Nikolaidis
Date:

Peter Andrews wrote:

> I am unable to insert the following string:
>
> 40'S?
>
> into a varchar field through my ODBC driver.  The statement:
>
> insert into test values('40\'S?');
>

A Question Mark is reserved as a parameter marker in odbc.   The best way to
do something like this is to actually use a parameter.  Then the driver will
allow question marks and other things.  It will also translate things this
way, such as single quotes and so forth.

So, the moral of the story is, anytime you need to insert anything other
than very simple data, use a parameter.

The above example would become something like:

strcpy(buf, "40'S?")
pcbValue = strlen(buf)
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0,  0,
buf, sizeof(buf), &pcbValue)
SQLExecDirect(hstmt, "insert into test values (?)", SQL_NTS)


Byron