Re: JDBC tutorial code

From: Steve Waldman <swaldman(at)mchange(dot)com>
To: Neil Kidd <neil(at)kidd(dot)org(dot)uk>
Cc: pgsql-novice(at)postgresql(dot)org
Subject: Re: JDBC tutorial code
Date: 2000-12-12 18:00:07
Message-ID: 20001212130007.A15570@peanut-butter.mchange.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

Neil,

For some reason, postgres' JDBC driver doesn't implement
PreparedStatement.setBinaryStream().
Use PreparedStatement.setBytes() instead.

Try this...

InputStream is = new BufferedInputStream(
new FileInputStream( file ) );
ByteArrayOutputStream baos = new ByteArrayOutputStream();
for (int b = is.read(); b >=0; b = is.read())
baos.write(b);
ps.setBytes(2, baos.toByteArray());

Hope this helps,
Steve

On Tue, Dec 12, 2000 at 11:55:06AM +0000, Neil Kidd wrote:
>
> Hello,
> I have followed the JDBC tutorial code at
> http://www.postgresql.org/devel-corner/docs/programmer/jdbc-lo.htm
> and keep getting an sqlException from the JDBC driver. I need to deal with
> BLOBS. Text fields etc work fine.
> The exception states: InputStream not supported.
>
> The code is as follows:
>
> import java.sql.*;
> import java.io.*;
>
> public class dbtest
> {
> public static void main( String[] args )
> {
> // Load the driver
> try
> {
> // Load the driver class
> Class.forName( "org.postgresql.Driver" );
>
> // Define the data source for the driver
> String dbURL = "jdbc:postgresql://192.168.0.3/mynewdb";
>
> // Create a connection through the DriverManager
> Connection dbCon = DriverManager.getConnection( dbURL, USER , PASS );
>
> dbCon.setAutoCommit( false );
>
> File file = new File(
> "D:\\dev\\code\\dbtest\\jdbc7.0-1.2.jar" );
> FileInputStream fis = new FileInputStream( file );
> PreparedStatement ps = dbCon.prepareStatement( "insert into test1
> values (?,?)" );
>
> ps.setString( 1, file.getName() );
> ps.setBinaryStream( 2, fis, ( int )file.length() );
> ps.executeUpdate();
> ps.close();
> fis.close();
> }
> catch( ClassNotFoundException cnfe )
> {
> System.err.println( "1 " + cnfe );
> }
> catch( SQLException sqle )
> {
> System.err.println( "2 " + sqle );
> sqle.printStackTrace(System.err);
> }
> catch( FileNotFoundException fnfe )
> {
> System.err.println( "3 " + fnfe );
> }
> catch( IOException ioe )
> {
> System.err.println( "4 " + ioe );
> }
> }
>
> Thanks in advance for any help.
> Regards,
> Neil
> ----------------------------------------------------------------
> From: Neil Kidd
> Website: http://www.kidd.org.uk
> E-mail: neil(at)kidd(dot)org(dot)uk
> ----------------------------------------------------------------

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Sterling 2000-12-12 18:46:54 What's this mean?
Previous Message Tom Lane 2000-12-12 17:57:46 Re: processing results from INTERSECT, UNION or EXCEPT