[freetds] Binary columns problem

ZIGLIO, Frediano, VF-IT Frediano.Ziglio at vodafone.com
Wed Oct 6 04:25:24 EDT 2004


> 
> I am having a problem updating binary fields using 
> SQLBindParameter. I use
> the following code
> 
> char buf[6] = "\x12\x34\x56\x78\x90"
> 
> SQLPrepare(stmtHandle, ³UPDATE P_SIMPLE SET P_BINARY = ? 
> WHERE P__URN = 1²,
> SQL_NTS)
> SQLBindParameter(stmtHandle, 1, SQL_PARAM_INPUT, 
> SQL_C_BINARY, SQL_BINARY,
> 5, 0, buf, 0, NULL)
> SQLExecute(stmtHandle)
> 
> Only the first byte of the value at buf gets stored, the 
> remaining 4 get set
> to 0.
> 
> Again any ideas. I have tried using the BufferLength and 
> StrLen_or_IndPtr
> parameters to no avail.
> 
> Thanks in advance,
> Ian
> 

Try to use StrLen_or_IndPtr (last SQLBindParameter parameters) and set it to 5. Note that you can't use a column of 5 bytes to insert 6 bytes...

So it should be

SQLINTEGER ind = 6;
char buf[6] = "\x12\x34\x56\x78\x90";

SQLPrepare(stmtHandle, "UPDATE P_SIMPLE SET P_BINARY = ? WHERE P__URN = 1", SQL_NTS);
SQLBindParameter(stmtHandle, 1, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BINARY, 6, 0, buf, 0, &ind);
SQLExecute(stmtHandle);

freddy77



More information about the FreeTDS mailing list