Thread: Newbee to databases (ODBC)
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
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/