SQL Injection e PreparedStatement

Ola.

Eu andei lendo sobre o sql injection e entendi como funciona, sei que tem que usar o PreparedStatement e tudo mais.

Só não consegui achar um exemplo na prática.

Ex.
Tenho essa query

SELECT * FROM clientes WHERE nome = ?

Teria que usar desse forma certo?

Mas como eu uso O PreparedStatement para passa o que vai dentro do ‘?’

Um exemplo com Insert, mas é fácil fazer algo parecido com Select:
http://www.exampledepot.com/egs/java.sql/InsertPs.html

Esse site ( http://www.exampledepot.com ) é muito completo. O autor também escreveu um livro chamado “Java Almanac”.

Julio,

Com relação a sua dúvida na utilização do PreparedStatement, vc pode substituir os ‘?’ pelos respectivos valores utilizando os métodos set’s do objeto PreparedStatement. Por exemplo: neste seu caso vc usaria o método setString(int indice, String str). Todo método setAlgumTipo, espera um índice, que representa a posição do parametro na query; lembrando que diferente dos arrays, os índice do PreparedStatement começa no ‘1’ e não no 0.

Ex:

// Query
String sql = "SELECT * FROM clientes WHERE nome = ? ";

// Aqui é preparada para receber os parâmetros.
PreparedStatement ps = conn.prepareStatement(sql);

// Aqui é setado o valor do parâmetro na query.
ps.setString(1, nome);

// Aqui obtém o retorno do banco.
ResultSet rs = ps.executeQuery();

Espero ter ajudado com a dúvida do PreparedStatement.

Galera, alguém sabe se posso passar um Array como parametro ?

Por que precisaria passar um array?

Qual é o tipo no banco de dados?

Por que precisaria passar um array?

Qual é o tipo no banco de dados?[/quote]

Abel Bueno,

estava salvando os dados que vinham de um form com paginação, mas consegui fazer com o Criteria.

:-o

vlw