O que significa dizer q um objeto eh pre-compilado, como no caso de PreperadStatment? Como isso funciona?
Tanto Statement quanto preparedStatement são objetos usados para executar instruções SQL
A diferença de um para o outro é que PreparedStatement aceita uma instrução precompilada.
Essa instrução é passada como parametro e armazenada no objeto preparedStatement.
try{
// sql a ser compilado/executado
sql.append("INSERT INTO USUARIO (nome, sobre_nome)");
sql.append(" VALUES (?, ?)");
// o objeto de conexão compila a instrução e
// armazena em um objeto PreparedStatement e
// retorna uma referência a ser usada futuramente
PreparedStatement ps = conexao.prepareStatement(sql.toString());
ps.setString(1, "Karen");// primeiro parametro de entrada/String
ps.setString(2, "Barbatto");// segundo parametro de entrada/String
ps.executeUpdate(); // executa o sql
}catch(SQLException sqle){
sqle.printStackTrace();
}
Ahhhh pra ficar mais claro, mostrei em forma de código o que significa instrução pre compilada.
Agora olha a diferença entre Statement para PreparedStatement
try{
// o objeto de conexão retorna uma referência de um objeto do tipo
// Statement a ser usada para armazenar e executar a instrução
// SQL
Statement stmt = conexao.createStatement();
// sql a ser compilado/executado
stmt.addBatch("INSERT INTO USUARIO (nome, sobre_nome)");
stmt.addBatch(" VALUES ('Karen', 'Barbatto')");
stmt.executeBatch(); // executa o sql
}catch(SQLException sqle){
sqle.printStackTrace();
}
Conseguiu ver porque PreparedStatement é precompilado?