JDBC:Using Large Objects

From: Steffen Zimmert <szimmert(at)crcg(dot)edu>
To: PostgreSQL General Mailing List <pgsql-general(at)hub(dot)org>, pgsql-interfaces(at)postgreSQL(dot)org
Subject: JDBC:Using Large Objects
Date: 1999-06-22 18:38:12
Message-ID: 376FD814.23CE0333@crcg.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-interfaces

Hi,

I am trying to store some Java objects in the PostgreSQL database
system. The version of PostgreSQL is 6.4.2 running on a linux sparc
machine. The JDBC driver is the one I found in the src/interfaces/jdbc
directory.

First of all I tried to use the example provided on page 167 of the JDCB
interface guide but the setBinaryStream() method is not supported by the
driver yet. So I wanted to store the objects as an array of bytes.
Here's the code I am using at the moment:

I created the associated database table with the following statement:
create table images (imgname name, imgoid oid);

// Load the driver
Class.forName("postgresql.Driver");

// Connect to database
System.out.println("Connecting to Database URL = " + url);
db = DriverManager.getConnection(url, usr, pwd);

System.out.println("Connected...Now creating a statement");
TestObject testObject = new TestObject(1);
byte[] objBytes = objectToBytes(testObject);
System.out.println("Bytes: " + objBytes.length);

// Create PreparedStatement
PreparedStatement ps = db.prepareStatement("Insert into database values
(?,?)");
ps.setString(1,"TEST");
ps.setBytes(2,objBytes);
ps.executeUpdate();
ps.close();

Every time when I execute my little program I receive the following
exception:
PostgreSQL basic test v6.3 rev 1
Connecting to Database URL = jdbc:postgresql://hornbill/foo
Connected...Now creating a statement
Bytes: 42
Exception caught.
java.sql.SQLException: IOError while reading from backend:
java.io.IOException: The backend has broken the connection. Possibly the
action you have attempted has caused it to close.
java.sql.SQLException: IOError while reading from backend:
java.io.IOException: The backend has broken the connection. Possibly the
action you have attempted has caused it to close.
at postgresql.PG_Stream.ReceiveChar(PG_Stream.java:183)
at postgresql.fastpath.Fastpath.fastpath(Compiled Code)
at postgresql.fastpath.Fastpath.fastpath(Fastpath.java:185)
at postgresql.largeobject.LargeObject.write(LargeObject.java:147)
at postgresql.PreparedStatement.setBytes(PreparedStatement.java:295)
at basic.<init>(basic.java:45)
at basic.main(basic.java:107)

In general is it possible to use the LargeObject interface with the JDBC
driver or is it not supported yet????
--
Best Regards,
Steffen Zimmert

Steffen Zimmert
Fraunhofer Center for Research in Computer Graphics
Providence, Rhode Island, USA
email: szimmert(at)crcg(dot)edu

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Steffen Zimmert 1999-06-22 19:04:01 Re: JDBC:Using Large Objects
Previous Message Dinesh Patil 1999-06-22 18:18:10 Unsubscribe me for Postgres mailing list.

Browse pgsql-interfaces by date

  From Date Subject
Next Message Oleg Bartunov 1999-06-22 18:43:02 Re: [INTERFACES] Perl Interface
Previous Message James Olin Oden 1999-06-22 18:24:14 Re: [INTERFACES] Perl Interface