PreparedStatement is an object that represents a precompiled SQL statement.It is used for executing SQL statements and returning the results it produces
CallableStatement is used to execute SQL stored procedures.The JDBC API provides a stored procedure SQL escape syntax that allows stored procedures to be called in a standard way for all RDBMSs.
You should always use CallableStatement to execute stored procedure. CallableStatement has some additional methods to deal with stored procedure. For instance if your stored procedure has some out parameter, then you can register same using registerOutParameter method, however there is no such method in PreparedStatement.
Gravitation cannot be held responsible for people falling in love ~ Albert Einstein