Subject | Firebird ODBC driver, SQLBindParameter |
---|---|
Author | lacakus |
Post date | 2012-11-29T14:54:33Z |
Hi *,
I encounter problem with following statements when working with Firebird ODBC driver:
(if this is not right place where ask such question please let me know)
1. I prepare statement with SQLPrepare. Statement is like:
'insert into mytable values(?)'
(table mytable has one BLOB column)
2. Then I use SQLBindParameter. Where I bind string f.e. '414243'
3. Then I use SQLExecute
2.1. When I set ValueType=SQL_C_BINARY and ParameterType=SQL_LONGVARBINARY all goes ok
2.2. But when I use for ValueType f.e.=SQL_C_CHAR and ParameterType=SQL_VARCHAR then data inserted into table are "corrupted" (in fact it is 'ABC', because driver interprets string like 0x41, 0x42, 0x43) ... it seems, that it performs translation.
(may be that int OdbcConvert::convStringToBlob is invoked)
But it is something what I do not expect ... also other ODBC drivers like PostgreSQL or MS SQL Server do not do that ... they simply insert string '414243' as is.
Is this behavior intentional or is this some kind of side effect ?
Does conversion occurs on client side (in ODBC driver) or on server side ?
Thanks
-Laco.
I encounter problem with following statements when working with Firebird ODBC driver:
(if this is not right place where ask such question please let me know)
1. I prepare statement with SQLPrepare. Statement is like:
'insert into mytable values(?)'
(table mytable has one BLOB column)
2. Then I use SQLBindParameter. Where I bind string f.e. '414243'
3. Then I use SQLExecute
2.1. When I set ValueType=SQL_C_BINARY and ParameterType=SQL_LONGVARBINARY all goes ok
2.2. But when I use for ValueType f.e.=SQL_C_CHAR and ParameterType=SQL_VARCHAR then data inserted into table are "corrupted" (in fact it is 'ABC', because driver interprets string like 0x41, 0x42, 0x43) ... it seems, that it performs translation.
(may be that int OdbcConvert::convStringToBlob is invoked)
But it is something what I do not expect ... also other ODBC drivers like PostgreSQL or MS SQL Server do not do that ... they simply insert string '414243' as is.
Is this behavior intentional or is this some kind of side effect ?
Does conversion occurs on client side (in ODBC driver) or on server side ?
Thanks
-Laco.