Hello Peter,
If the only problem is binding variables to an
OraclePreparedStatement, you might try to implement a CustomField for
your bind value:
http://www.jooq.org/doc/3.0/manual/sql-building/queryparts/custom-queryparts
With an appropriate API, you should then be able to do:
create.insertInto(TABLE,
TABLE.ID, TABLE.BLOB)
.values(1, new MyBlob(byteArray))
.execute();
Note that you might need to do some tricks to extract the actual
OraclePreparedStatement from the Statement provided by jOOQ.
Otherwise, just wrap your byte[] in a ByteArrayInputStream, and pass
it to PreparedStatement.setBinaryStream
Let me know how that works.
Cheers
Lukas
2013/4/2 <
bizi...@gmail.com>:
> Hi both,
>
> Thanks for taking the time to try to deal with my problem.
>
> To add a bit of an extra detail to it, I'd want to write and query
> reasonably large (between 1-16 megabytes) values in an Oracle database but
> only one at a time. The values are stored in byte arrays or Strings, so I
> don't really need the stream semantics of standard LOB handling.
>
> Now querying isn't a problem, as ResultSet.getBytes() seems to work fine for
> any size values but
>
> Due to these limitations I thought about using
> OraclePreparedStatement.setBytesForBlob() to bind my values for write
> operations but there's no extension point I can find where I could do this.
> So as a limited (but still fairly generic) solution I thought about some
> kind of extension mechanism in the binding process, maybe an interface
> called 'SelfBindingValue', with a single method bindSelf( PreparedStatement
> ps, SQLDialect d) that is called by DefaultBindContext.bindValue0().
>
> Or is there an obvious flaw in this idea?
>
> Thanks in advance,
> Peter