title: Java - Exception in thread "main" java.lang.Error: Unresolved compilation problems
body: <p>I have some problem in my JDBC code. I am trying to connect through MySQL but it gives me an error. My error log is given below if you have some time.</p>
  
  <pre><code>Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
      BLOB cannot be resolved to a type
      BLOB cannot be resolved to a type
  
      at serialize.SerializeDeserialze.main(SerializeDeserialze.java:73)
  </code></pre>
  
  <p>My code is given below. I am using <code>mysql-connector-java-5.1.20.jar</code> driver:</p>
  
  <pre><code>package serialize;
  /*
   By vivek
  */
  
  import java.io.InputStream;
  import java.io.ObjectInputStream;
  import java.io.ObjectOutputStream;
  import java.io.OutputStream;
  import java.sql.CallableStatement;
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.PreparedStatement;
  import java.sql.ResultSet;
  import java.util.ArrayList;
  import java.util.List;
  
  import oracle.sql.BLOB;
  
  /****
  CREATE TABLE java_objects (object_id NUMBER, object_name varchar(128), object_value BLOB DEFAULT empty_blob(), primary key (object_id));
  SQL&gt; desc java_objects;
   Name                                      Null?    Type
   ----------------------------------------- -------- ----------------------------
   OBJECT_ID                                 NOT NULL NUMBER
   OBJECT_NAME                                        VARCHAR2(128)
   OBJECT_VALUE                                       BLOB
  
  SQL&gt; select SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, LAST_NUMBER from  user_sequences;
  
  SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY LAST_NUMBER
  ------------------------------ ---------- ---------- ------------ -----------
  ID_SEQ                                  1 1.0000E+27            1          21
  JAVA_OBJECT_SEQUENCE                    1 1.0000E+27            1           1
  
  */
  public class SerializeDeserialze {
    public static void main(String[] args) throws Exception {
      String WRITE_OBJECT_SQL = "BEGIN "
          + "  INSERT INTO java_objects(object_id, object_name, object_value) "
          + "  VALUES (?, ?, empty_blob()) " + "  RETURN object_value INTO ?; " + "END;";
      String READ_OBJECT_SQL = "SELECT object_value FROM java_objects WHERE object_id = ?";
  
      Connection conn = getOracleConnection();
      conn.setAutoCommit(false);
      List&lt;Object&gt; list = new ArrayList&lt;Object&gt;();
      list.add("This is a short string.");
      list.add(new Integer(1234));
      list.add(new java.util.Date());
  
      // write object to Oracle
      long id = 0001;
      String className = list.getClass().getName();
      CallableStatement cstmt = conn.prepareCall(WRITE_OBJECT_SQL);
  
      cstmt.setLong(1, id);
      cstmt.setString(2, className);
  
      cstmt.registerOutParameter(3, java.sql.Types.BLOB);
  
      cstmt.executeUpdate();
      BLOB blob = (BLOB) cstmt.getBlob(3);
      OutputStream os = blob.getBinaryOutputStream();
      ObjectOutputStream oop = new ObjectOutputStream(os);
      oop.writeObject(list);
      oop.flush();
      oop.close();
      os.close();
  
      // Read object from oracle
      PreparedStatement pstmt = conn.prepareStatement(READ_OBJECT_SQL);
      pstmt.setLong(1, id);
      ResultSet rs = pstmt.executeQuery();
      rs.next();
      InputStream is = rs.getBlob(1).getBinaryStream();
      ObjectInputStream oip = new ObjectInputStream(is);
      Object object = oip.readObject();
      className = object.getClass().getName();
      oip.close();
      is.close();
      rs.close();
      pstmt.close();
      conn.commit();
  
      // de-serialize list a java object from a given objectID
      List listFromDatabase = (List) object;
      System.out.println("[After De-Serialization] list=" + listFromDatabase);
      conn.close();
    }
  
    private static Connection getHSQLConnection() throws Exception {
      Class.forName("org.hsqldb.jdbcDriver");
      System.out.println("Driver Loaded.");
      String url = "jdbc:hsqldb:data/tutorial";
      return DriverManager.getConnection(url, "sa", "");
    }
  
    public static Connection getMySqlConnection() throws Exception {
      String driver = "org.gjt.mm.mysql.Driver";
      String url = "jdbc:mysql://localhost/demo2s";
      String username = "oost";
      String password = "oost";
  
      Class.forName(driver);
      Connection conn = DriverManager.getConnection(url, username, password);
      return conn;
    }
  
    public static Connection getOracleConnection() throws Exception {
      String driver = "oracle.jdbc.driver.OracleDriver";
      String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
      String username = "userName";
      String password = "password";
  
      Class.forName(driver); // load Oracle driver
      Connection conn = DriverManager.getConnection(url, username, password);
      return conn;
    }
  </code></pre>