é o seguinte, eu fiz uma aplicaçao de locadora com entuido de estudar
ai eu fiz as conexoes com o banco mysql com statement mesmo ai eu estou tentando tunar e fazer uns detales mais “interessantes”
meu grande problema eh é fazer a pesquisa com o PreparedStatement, deleçao, inserçao e alteraçao ja foram, mas… a pesquisa me qbro
pq com o statement eu simplesmente testava o clienteVO que vem no meu action, oq tivesse nulo eu ignorava e oq tivesse preenchido concatenava
vou por um exemplo aqui
public List<ClienteVO> buscaCliente(ClienteVO cliente) {
Integer codigo = cliente.getCodCiente();
String nome = cliente.getNome();
String cpf = cliente.getCpf();
String endereco = cliente.getEndereco();
String numero = cliente.getNumero();
String dtNascimento = cliente.getDtNascimento();
String logradouro = cliente.getLogradouro();
String auxiliar = "";
if ((codigo != null) && (codigo > 0)) {
auxiliar += " AND ClienteID = "+ codigo.intValue();
}
if ((nome != null) && (nome != "")) {
auxiliar += " AND nome like '%"+nome+"%'";
}
if ((cpf != null) && (cpf != "")) {
auxiliar += " AND cpf = '"+cpf+"'";
}
if ((endereco != null) && (endereco != "")) {
auxiliar += " AND endereco like '%"+endereco+"%'";
}
if ((numero != null) && (numero != "")) {
auxiliar += " AND numero = "+numero;
}
if ((dtNascimento != null) && (dtNascimento != "")) {
auxiliar += " AND dtNascimento = '"+dtNascimento+"'";
}
if ((logradouro != null) && (logradouro != "")) {
auxiliar += " AND logradouroID = "+logradouro;
}
StringBuffer query = new StringBuffer();
query.append("SELECT * FROM cliente WHERE 1 = 1");
if(auxiliar != "")
{
query.append(auxiliar);
}
ai tranquilo funciona perfeitamente(o codigo nao ta completo soh copiei a parte da concatenaçao que é a minha duvida)
mais com o PreparedStatement isso nao funciona assim… eu tenhu que fazer os set nos “?”
alguem tem alguma dica? sendo que o usuario pode pesquisar por qualquer campo , e por 1 ou mais, e caso nao preencha nem um buscar todos inseridos 
obs
aqui o insert com PreparedStatement , e arquivo de propert
public void cadastraCliente(ClienteVo cliente) {
StringBuffer query = new StringBuffer();
query.append(properties.getProperty("cliente.insert"));
PreparedStatement pstmt = null;
try {
// NOME, CPF, ENDERECO, NUMERO, COMPLEMENTO, DATA_NASCIMENTO, CEP_ID, EMAIL, SENHA
conn = Conexao.getInstance().getConnection();
pstmt = conn.prepareStatement(query.toString());
pstmt.setString(1, cliente.getNome());
pstmt.setString(2, cliente.getEndereco());
pstmt.setInt(3, cliente.getNumero().intValue());
pstmt.setString(4, cliente.getComplemento());
pstmt.setDate(5, Uteis.dateToDateSql(cliente.getDtNascimento()));
pstmt.setInt(6, cliente.getIdCep().intValue());
pstmt.setString(7, cliente.getEmail());
pstmt.setString(8, cliente.getSenha());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
se alguem tiver alguma dica todas são bem vindas
criticas e sugestoes ao codigo tb sao aceitas e bem vindas XD
(só desconsidero dica de portugues =x)