Hello,
You can use SQLGetData(...) function:
//Setup selectstatement
strcpy((char*) SQLStmt, "Select no_char, blobdata from tab1");
//Execute the statement
rc = SQLExecDirect(dbConnection.StmtHandle, SQLStmt, SQL_NTS);
//Define what to read out from the selection set
rc =SQLBindCol(StmtHandle, 1, SQL_C_LONG, (SQLPOINTER) &no, sizeOf(no),
NULL);
rc =SQLBindCol(StmtHandle, 2 SQL_C_BINARY, (SQLPOINTER) blob, no, NULL);
// get the values
while(SQLFetch(StmtHandle) != SQL_NO_DATA)
{
void* blob = malloc(no);
if (blob)
{
rc = SQLGetData(StmtHandle, 2, SQL_V_BINARY, blob, no, &no);
...
...
free (blob);
}
}
Malm Paul wrote:
Hi all,
I'm sorry to bother you with this question, I know it is a C++ ODBC
question. But I'm a bit desperate.
Perhaps I'll be lucky.
I have a table with 2 columns no_char and blobdata were no_char is
number of characters in blobdata. I would like to handle each row from
the result set.
I have got this far:
//Setup selectstatement
strcpy((char*) SQLStmt, "Select no_char, blobdata from tab1");
//Execute the statement
rc = SQLExecDirect(dbConnection.StmtHandle, SQLStmt, SQL_NTS);
//Define what to read out from the selection set
rc =SQLBindCol(StmtHandle, 1 SQL_C_LONG, (SQLPOINTER) &no, sizeOf(no),
NULL);
rc =SQLBindCol(StmtHandle, 2 SQL_C_BINARY, (SQLPOINTER) blob, no, NULL);
// get the values
while(SQLFetch(StmtHandle) != SQL_NO_DATA)
{
...
...
}
But this will not work since I'm using "no" in the second statement to
define the blob size, and no is not set yet.
I could solve it by using 2 different select statemen (once for the
size and one for the blob) but that seems to be a bad solution.
Sorry again!
/Paul
--
Andrei Kovalevski
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Managed Services, Shared and Dedicated Hosting
Co-Authors: plPHP, ODBCng - http://www.commandprompt.com/
---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings