From: | Peter T Mount <peter(at)retep(dot)org(dot)uk> |
---|---|
To: | pgsql-jdbc(at)postgresql(dot)org |
Cc: | Brian Buck <bbuck(at)dimensional(dot)com> |
Subject: | Fwd: Large Objects (please help) |
Date: | 2001-10-08 14:03:47 |
Message-ID: | 5.1.0.14.0.20011008150257.02651bf8@mail.retep.org.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
I'm forwarding this to the jdbc list.
Peter
>Hi Peter,
>
>I am trying to insert and/or select from Postgres a gif image by using
>the Large Object type. I am writing a Java client and middle tier to a
>Postgres db backend using your JDBC driver and I have hit an issue with
>what your documantation shows and the exceptions I am seeing when I run
>a simple comand line program.
>
>here is the java code I am running:
>
>....
> File file = new File("...(some path).../tomcat.gif");
> FileInputStream fis = new FileInputStream(file);
> PreparedStatement ps = db.prepareStatement("insert into image values
>(?,?)");
> ps.setString(1,file.getName());
> //ps.setObject(2,fis,java.sql.Types.LONGVARBINARY);
> ps.setBinaryStream(2,fis, file.length());
> ps.executeUpdate();
> ps.close();
> fis.close();
>....
>
>The code is almost verbatim from your documentation.
>"image" is a table containing a image name and oid attributes. I have
>tried both the statements, ps.setBinaryStream(2,fis, file.length())
>and ps.setObject(2,fis,java.sql.Types.LONGVARBINARY). The first
>statement produces a compile time error :
>
>main.java:70: setBinaryStream(int,java.io.InputStream,int) in
>java.sql.PreparedStatement cannot be applied to
>(int,java.io.FileInputStream,long)
> ps.setBinaryStream(2,fis, file.length());
>
>The JDBC API confuses me a little. Why doesn't the JDBC interface
>define a long for this argument? After all, we are dealing with big
>byte streams. Hmm.
>
>The second statement, ps.setObject(2,fis,java.sql.Types.LONGVARBINARY),
>which I thought would be a good substitute produces a runtime exception:
>
>Unknown Types value.
> at
>org.postgresql.jdbc2.PreparedStatement.setObject(PreparedStatement.java:492)
>
> at
>org.postgresql.jdbc2.PreparedStatement.setObject(PreparedStatement.java:498)
>
> at main.main(main.java:69)
>
>Does your driver fully implement the JDBC API? LONGVARBINARY is a
>valiid java.sql data type. Maybe I have an old version of your driver.
>
>Here is my environment:
>PostgreSQL 7.0.3 on i686-pc-linux-gnu, compiled by gcc 2.96
>jdbc7.0-1.2.jar
>java full version "1.4.0-beta2-b77"
>uname -a
>Linux localhost.localdomain 2.4.2-2 #1 Sun Apr 8 20:41:30 EDT 2001 i686
>unknown
>
>Any help would be appreciated. Thank you.
>
>Cheers,
>Brian Buck
From | Date | Subject | |
---|---|---|---|
Next Message | Dave Harkness | 2001-10-08 19:07:01 | Re: Fwd: Large Objects (please help) |
Previous Message | Arsalan Zaidi | 2001-10-08 10:03:11 | Re: java.lang.OutOfMemory Exception with a large number of inserts |