import java.io.Reader;
import java.io.CharArrayReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import java.io.IOException;
import java.sql.SQLException;


public class testLob2{

    public static void main(String[] args) throws SQLException,ClassNotFoundException,IOException  {
	
	Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

	Connection conn = DriverManager.getConnection("jdbc:derby:testdb;create=true");
	Statement st = conn.createStatement();
	try{
	    st.execute("drop table a");
	}catch(SQLException e){
	    e.printStackTrace();
	}

	st.execute("create table a(b clob)");
	st.close();
	
	PreparedStatement pst = conn.prepareStatement("insert into a(b) values(?)");

	char[] data = new char[1024 * 1024];
	for(int i = 0;
	    i < data.length;
	    i  ++){
	    data[i] = (char)(i % ('Z' - '0'));
	}

	pst.setCharacterStream(1,new CharArrayReader(data),data.length);
	pst.executeUpdate();
	pst.close();
	
	
	st = conn.createStatement();
	ResultSet rs = st.executeQuery("select b from a");
	rs.next();
	
	Reader reader = rs.getCharacterStream(1);
	System.out.println("Here goes first reader");
	System.out.println(reader.read());
	System.out.println(reader.read());
	System.out.println(reader.read());
	reader.close();

	reader = rs.getCharacterStream(1);
	System.out.println("Here goes 2nd reader");
	System.out.println(reader.read());
	System.out.println(reader.read());
	System.out.println(reader.read());
	reader.close();
	
	rs.close();
	st.close();

	conn.close();

    }

}
