package org.geotools.data.oracle; import java.sql.Connection; import java.sql.PreparedStatement; import org.geotools.jdbc.JDBCLobTestSetup; public class OracleLobTestSetup extends JDBCLobTestSetup { protected OracleLobTestSetup() { super(new OracleTestSetup()); } @Override protected void createLobTable() throws Exception { run("CREATE TABLE testlob (fid int, blob_field BLOB, clob_field CLOB, PRIMARY KEY (fid) )"); run("CREATE SEQUENCE testlob_pkey_seq START WITH 0 MINVALUE 0"); run("CREATE TRIGGER testlob_pkey_trigger " + "BEFORE INSERT ON testlob " + "FOR EACH ROW " + "BEGIN " + "SELECT testlob_pkey_seq.nextval INTO :new.fid FROM dual; " + "END;"); // insert data. We need to use prepared statements in order to insert blobs Connection conn = getConnection(); PreparedStatement ps = null; try { String sql = "INSERT INTO testlob(blob_field, clob_field) VALUES(?, ?)"; ps = conn.prepareStatement(sql); ps.setBytes(1, new byte[] {1,2,3,4,5}); ps.setString(2, "small clob"); ps.execute(); } finally { if(ps != null) ps.close(); conn.close(); } } @Override protected void dropLobTable() throws Exception { runSafe("DROP SEQUENCE testlob_pkey_seq"); runSafe("DROP TABLE testlob"); } }