A task for Binary decode?

Rodney Tamblyn rodneytamblyn at paradise.net.nz
Tue Aug 12 12:38:00 EDT 2003


Hi everyone,

I need to convert some data received from a postgreSQL database back  
into recognizable binary data.  The data was written there by a  
JDBC/Java application, and it appears that it stores the binary data in  
octets - but this is new territory for me so I am hoping someone more  
knowledgible here can help.

I'm retrieving this data using Revolution's database library.

I wonder whether binaryDecode or (possibly even) the convertOctals  
property could be useful in converting this data back into recognizable  
binary data.  Any ideas?

I am still trying to get the PostgreSQL database to allow me to upload  
blobs from Revolution, but so far without success...

Thanks very much.


~Rodney
(going to bed as is 4.30am, and although I enjoy programming in  
Revolution a lot... well, there are limits!)

-- sample of data

\377\330\377\341\025\342Exif\000\000MM\000*\000\000\000\010\000\014\001\ 
017\000\002\000\000\000\006\000\000\000\236\001\020\000\002\000\000\000\ 
023\000\000\000\244\001\022\000\003\000\000\000\001\000\001\000\000\001\ 
022\000\003\000\000\000\001\000\001\000\000\001\032\000\005\000\000\000\ 
001\000\000\000\270\001\033\000\005\000\000\000\001\000\000\000\300\001( 
\000\003\000\000\000\001\000\002\000\000\0011\000\002\000\000\000\016\00 
0\000\000\310\0012\000\002\000\000\000\024\000\000\000\326\001<\000\002\ 
000\000\000\020\000\000\000\352\002\023\000\003\000\000\000\001\000\001\ 
000\000\207i\000\004\000\000\000\001\000\000\000\372\000\000\003\240Cano 
n\000Canon PowerShot  
G3\000\000\000\264\000\000\000\001\000\000\000\264\000\000\000\001\000\0 
00QuickTime 6.1\0002003:08:03 17:56:50\000Mac OS X

-- sample of jdbc code used to write the object:
(I think this code is right, but - well -  possibly not the latest  
version, let me know if you are interested and
I will check)

Postgres supports inserting blobs through JDBC like Oracle:

CREATE TABLE images (imgname text, img bytea);

To insert an image, you would use:

  File file = new File("myimage.gif");
  FileInputStream fis = new FileInputStream(file);
  PreparedStatement ps = conn.prepareStatement("INSERT INTO images VALUES
(?, ?)");
  ps.setString(1, file.getName());
  ps.setBinaryStream(2, fis, file.length());
  ps.executeUpdate();
  ps.close();
  fis.close();

To retrieve it you:

PreparedStatement ps = con.prepareStatement("SELECT img FROM images  
WHERE
imgname=?");
  ps.setString(1, "myimage.gif");
  ResultSet rs = ps.executeQuery();
  if (rs != null) {
      while(rs.next()) {
          byte[] imgBytes = rs.getBytes(1);
          // use the stream in some way here
      }
      rs.close();
  }
  ps.close();




More information about the metacard mailing list