From: | Bill <bouma(at)cplane(dot)com> |
---|---|
To: | pgsql-interfaces(at)postgresql(dot)org |
Subject: | JDBC driver writes binary data ONLY as Large Object |
Date: | 2000-08-01 19:37:03 |
Message-ID: | 398726DF.D52AACA7@cplane.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-interfaces |
The problem is that PreparedStatement.setBytes() only writes Large
Objects. It should do something like ResultSet.getBytes(), which
checks the column meta-data to see if the column holds an OID or
not, then do the right thing based on that.
Bill <bouma(at)cplane(dot)com>
-------------------------------------------------
.../postgresql-7.0.2/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java
/**
* Set a parameter to a Java array of bytes. The driver converts this
* to a SQL VARBINARY or LONGVARBINARY (depending on the argument's
* size relative to the driver's limits on VARBINARYs) when it sends
* it to the database.
*
* <p>Implementation note:
* <br>With org.postgresql, this creates a large object, and stores the
* objects oid in this column.
*
* @param parameterIndex the first parameter is 1...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
public void setBytes(int parameterIndex, byte x[]) throws SQLException
{
LargeObjectManager lom = connection.getLargeObjectAPI();
int oid = lom.create();
LargeObject lob = lom.open(oid);
lob.write(x);
lob.close();
setInt(parameterIndex,oid);
}
From | Date | Subject | |
---|---|---|---|
Next Message | Kovacs Zoltan Sandor | 2000-08-01 19:51:44 | Re: Function sequence error with ODBCExpress |
Previous Message | Ken J. Wright | 2000-08-01 17:57:16 | Re: Function sequence error with ODBCExpress |