Boa Tarde,
Bem eu comecei a aprender Java Sozinoi, lendo apostilas enfim, entretanto, para me conectar aos banco de dados, eu utilizo o Statement, pois esse foi o metodo que eu aprendi, No entanto algumas pessoas me orientaram para trabalhar com o PreparedStatement, porem eu desconheço esse modo de trabalhar com o BD, tentei procurar um material na internet referente a este conteudo porem nao encontrei nada relevante, por isso gostaria de saber se algum de vcs tem um apostila ou algo do genero, que possa me ajudar a trabalhar com o PreparedStatement.
Vlw aehh Galera
Olá, seja bem vindo ao PJ!
O uso mais comum do PreparedStatement é para evitar SQLInjection. Imagine uma query dinâmica montada dessa forma:
String sql = "select * from user where username='" + username +"' and password='" + password + "'";
Agora imagine que o usuário entre com o seguinte valor:
admin' OR '1'='1
O SQL gerado será:
select * from user where username='admin' OR '1'='1' and password=' '
Permitindo assim o acesso indevido.
Fique atento a um detalhe. Mesmo usando PreparedStatement você pode ter SQLInjection. Se você usar PreparedStatement e continuar concatenando os valores na String quee forma o SQL, o problema pode persistir. Sempre use assim:
String selectStatement = "SELECT * FROM User WHERE userId = ? ";
PreparedStatement prepStmt = con.prepareStatement(selectStatement);
prepStmt.setString(1, userId);
ResultSet rs = prepStmt.executeQuery();
http://www.guj.com.br/java.tutorial.artigo.115.1.guj
Além do mais o PreparedStatetement facilita muito e enxuta bem o código sem termos que escrever as querys diretamente nele.
No livro Deitel Java Como Programar 6ºE tem um Capitulo dedicado a acesso a dados.
E uma das principais caracteristicas do PreparedStatement é que ele pode ser compilado pelo banco de dados para multiplas execuções, o que te dá um ganho de performance.
http://java.sun.com/j2se/1.5.0/docs/api/java/sql/PreparedStatement.html