[EMAIL PROTECTED] wrote:
>
> On 05-Mar-2002 Steffen Goeldner wrote:
> > Currently, long get_info() return values (e.g. SQL_KEYWORDS)
> > are truncated.
> > That's because the buffer has a static size of 256.
> > The attached patch allocates the buffer dynamically and
> > reallocates it if needed.
> >
> >
> > Steffen
>
> As far as I recall you can call SQLGetInfo with a NULL InfoValuePtr but a valid
> StringLengthPtr. This then returns the size of the buffer you would need to get
> all the data back.
>
> e.g.
>
> if (SQL_SUCCEEDED(SQLGetInfo(hdbc, SQL_KEYWORDS, NULL, 0, &sqlsmallint))) {
> SQLCHAR buf;
Hmm, works for the MS Access ODBC driver, but seems to be an
undocumented feature. Other drivers (e.g. Oracle) ignore this
call.
>
> buf = malloc(sqlsmallint + 1);
> SQLGetInfo(hdbc, SQL_KEYWORDS, buf, sqlsmallint + 1, *sqlsmallint);
> /* copy buf somewhere */
> free(buf);
> }
Steffen