Prepared Statement

8 respostas
I

Olá… tenho uma prepared statement como o exemplo:

GETBYATT (“SELECT * FROM DADOS WHERE ? LIKE ?”);

gostaria de saber se isso é válido, pois está dando erro.
Gostaria de saber também, se for válido, como setar os valores dela!!!

8 Respostas

thiagorani
// SQL
strSql = "insert into tabela (codigo,nome) values(?,?)";

//Atribuindo sql para o preparedStatement
pstmt = con.prepareStatement(strSql);

pstmt.clearParameters();
	
// seta os valores do preparedStament
pstmt.setInt(1, codigo);
pstmt.setString(2, nome);

//Execução
pstmt.executeUpdate();
I

Eu gostaria que fosse chamada a tabela na qual ele faz a consulta através de prepared… entendeu?
SELECT * FROM TABELA WHERE ? LIKE ?
Seria algo como
SELECT * FROM TABELA WHERE NOME (pego num switch) LIKE %jose% (pego em um getAtributo)

Rafael_Steil

Nao vai funcionar da maneira que voce quer. O ? tera seu valor real colocado entre ’ ( aspas/apostrofo ), o que daria erro no sql.
O LIKE voce ainda consegue, bastando que passe como valor o % tambem:

String sql = "SELECT campo FROM tabela WHERE campo LIKE ?";
...
p.setString(1, "%"+ variavelComOValor +"%");

Rafael

I

“Rafael Steil”:
Nao vai funcionar da maneira que voce quer. O ? tera seu valor real colocado entre ’ ( aspas/apostrofo ), o que daria erro no sql.
O LIKE voce ainda consegue, bastando que passe como valor o % tambem:

String sql = "SELECT campo FROM tabela WHERE campo LIKE ?";
...
p.setString(1, "%"+ variavelComOValor +"%");

Rafael

Certo, então a melhor maneira seria fazer um switch que pega o campo e faiz uma prepareStatement pra cada tipo de campo?

Rafael_Steil

Voce pode montar o WHERE dinamicamente, com concatenacao de Strings

Rafael

cv1

De uma olhada no pattern Builder, ao inves de simplesmente usar concatenacao. Fica beeem mais facil de manter :wink:

Rafael_Steil

cv, o search do forum eu to fazendo assim:

http://www.jforum.net/teste/SearchVH.java

O que acha? a ideia era tornar a criacao de sqls dinamicamente mais simples ( mas nao que atualmente esteja mto simples :wink: )

Rafael

cv1

Ficou legal, mas um builder era mais o caso - repare que vc deixou no mesmo lugar a “concatenacao” e a “api” de criterios…com um Builder, pelo menos a concatenacao fica separada da logica da coisa. :wink:

Criado 30 de dezembro de 2003
Ultima resposta 30 de dez. de 2003
Respostas 8
Participantes 4