/* OracleInsert.java Author: August Mueller Description: create table SERIALIZED_OBJECTS ( name varchar2(255), object long raw(0) ); */ package OracleInsert; import java.sql.*; import java.util.*; import java.io.*; public class OracleInsert { static final String driver_class = "oracle.jdbc.driver.OracleDriver"; public OracleInsert() { try { Connection dbconn = createConnection(); insertObject(dbconn); getObject(dbconn); dbconn.close(); } catch (Exception e) { log(e.toString()); e.printStackTrace(System.out); } } private void insertObject(Connection dbconn) { try { Hashtable h = new Hashtable(); h.put("item1", "rabbot"); h.put("item2", "dog"); Vector v = new Vector(); v.addElement("Hello doggie!"); v.addElement("rabbits are gud!"); v.addElement("Gus is cool!"); Integer i = new Integer(45); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(baos); //add one of the objects above.. here I write the vector. out.writeObject(v); out.close(); int size_of_buffer = baos.size(); byte [] byte_buffer = baos.toByteArray(); String query = "insert into serialized_objects values (?, ?)"; PreparedStatement pstmt = dbconn.prepareStatement(query); pstmt.setString(1, "some key"); pstmt.setBinaryStream(2, new ByteArrayInputStream(byte_buffer), size_of_buffer); pstmt.execute(); pstmt.close(); } catch(Exception e) { log("Exception saving buffered object to oracle"); log(e.toString()); } } private void getObject(Connection dbconn) { try { String query = "select * from serialized_objects"; Statement stmt = dbconn.createStatement(); ResultSet rs = stmt.executeQuery(query); Hashtable h = null; ByteArrayInputStream bais = null; Object o = null; Vector v = null; while (rs.next()) { log(rs.getString(1)); bais = new ByteArrayInputStream(rs.getBytes(2)); if (bais != null) { ObjectInputStream p = new ObjectInputStream(bais); o = p.readObject(); bais.close(); if (o instanceof Hashtable) { h = (Hashtable) o; log("Hashtable! " + h.toString()); } else if (o instanceof Vector) { v = (Vector) o; log("Vector! " + v.toString()); } else log(o.getClass() + ": " + o.toString()); } } rs.close(); stmt.close(); } catch(Exception e) { log("Exception getting object from oracle"); log(e.toString()); } } static public void main(String[] args) { new OracleInsert(); } private Connection createConnection() { String dbURL = "@your.data.com:1521:data"; String user = "user_id"; String password = "password"; Connection dbconn = null; try { Class.forName(driver_class); dbconn = DriverManager.getConnection("jdbc:oracle:thin:" + user +"/" + password + dbURL); } catch(Exception e) { e.printStackTrace(System.out); } return dbconn; } public void log(String s) { System.out.print ("OracleInsert: "); System.out.println(s); } }