Até ai nada demais, funciono que foi uma maravilha.
Porem, quando eu tentei fazer [antes de mais nada uns metodos da minha classe]:
public boolean createPreparedStatement(String sql){
try{
this.statement = this.connection.prepareStatement(sql);
return true;
} catch(Exception e){
}
return false;
}
... Fora da classe
mysql.createPreparedStatement("SELECT ? FROM usuarios");
mysql.statement.setString(1, "user");
//este de cima roda que é uma eleza
//se eu tentar fazer esta de baixo da pau.
mysql.createPreparedStatement("SELECT * FROM ?");
mysql.statement.setString(1, "usuarios");
ResultSet usuarios = mysql.statement.executeQuery();
Não faça isso. Olha só o problema que você ganha:
No seu código tem isso: String sql = “SELECT COLUNA FROM TABELA WHERE NOME LIKE '%” + nomeDigitado + “%’”;
Daí o usuário digita isso:
xxx’; DELETE FROM TABELA; – hahaha, se fu mané, perdeu playboy!
Enfim, criar SQLs via concatenação de strings abre uma falha de segurança. Não faça isso.
Para o caso do like, você pode tentar isso: statement.setString(1, “%” + valorDaColuna + “%”);
T
thingol
Um PreparedStatement é uma interface com um recurso do seu banco de dados que permite deixar queries pré-compiladas.
Normalmente, para queries pré-compiladas, somente é possível alterar os valores das colunas, mas não o nome delas ou pior, o nome da própria tabela. Quando o driver do banco vai falar com o banco usando uma query pré-compilada, ele só precisa mandar um identificador dessa query, e os valores (em binário) identificados pelos parâmetros, o que torna a consulta muito mais rápida.