Thread: Problem with SQL_LONGVARBINAY

Problem with SQL_LONGVARBINAY

From
"Han"
Date:
Hi,
     There's a problem when insert a SQL_LONGVARBINARY(lo) column in the following way:
    Use SQLBindParameter(...SQL_DATA_AT_EXEC)
    and SQLParamData, SQLPutData.
    The last time SQLParamData revoke a crash!
    This is the sample code:
    for (...)
    {
        sdw = SQL_DATA_AT_EXEC;
        rc = SQLBindParameter(hstmt, w, SQL_PARAM_INPUT,
                SQL_C_TCHAR, rgFields[ind].wSQLType,
                rgFields[ind].precision, rgFields[ind].scale,
                (LPTSTR)(((UDWORD)ind)+BIND_PARM_OFFSET), 0, &sdw);
    }
    rc = SQLExecDirect(hstmt, lpqt->sz, SQL_NTS);
    if (SQL_NEED_DATA != rc)
        return;
    for(ind = 0; ind <= cTypes; ind++)
    {
        rc = SQLParamData(hstmt, &ptr);
        if(rc != SQL_NEED_DATA)
            break;

        pch = qtMakeData(...);

        if(*pch) {
            rc = SQLPutData(hstmt, pch, SQL_NTS);
        } else {
            rc = SQLPutData(hstmt, (LPTSTR)IGNORED, SQL_NULL_DATA);
        }
    }

    please check, thanks and regards!


        


        Han
        zhouhanok@vip.sina.com
          2003-03-17




Re: Problem with SQL_LONGVARBINAY

From
Hiroshi Inoue
Date:
Sorry for the delay.
Please try the snapshot dll at
    http://www.geocities.jp/inocchichichi/psqlodbc/.

regards,
Hiroshi Inoue
    http://www.geocities.jp/inocchichichi/psqlodbc/

Han wrote:
>
> Hi,
>         There's a problem when insert a SQL_LONGVARBINARY(lo) column in the following way:
>         Use SQLBindParameter(...SQL_DATA_AT_EXEC)
>         and SQLParamData, SQLPutData.
>         The last time SQLParamData revoke a crash!
>         This is the sample code:
>         for (...)
>         {
>                 sdw = SQL_DATA_AT_EXEC;
>                 rc = SQLBindParameter(hstmt, w, SQL_PARAM_INPUT,
>                                 SQL_C_TCHAR, rgFields[ind].wSQLType,
>                                 rgFields[ind].precision, rgFields[ind].scale,
>                                 (LPTSTR)(((UDWORD)ind)+BIND_PARM_OFFSET), 0, &sdw);
>         }
>         rc = SQLExecDirect(hstmt, lpqt->sz, SQL_NTS);
>         if (SQL_NEED_DATA != rc)
>                 return;
>         for(ind = 0; ind <= cTypes; ind++)
>         {
>                 rc = SQLParamData(hstmt, &ptr);
>                 if(rc != SQL_NEED_DATA)
>                         break;
>
>                 pch = qtMakeData(...);
>
>                 if(*pch) {
>                         rc = SQLPutData(hstmt, pch, SQL_NTS);
>                 } else {
>                         rc = SQLPutData(hstmt, (LPTSTR)IGNORED, SQL_NULL_DATA);
>                 }
>         }
>
>     please check, thanks and regards!