Bom dia. Estou criando um aplicativo e gostaria de saber se tem uma forma de colocar mais de um parâmetro na instrução where na hora de efetuar o query em uma consulta, por exemplo: tenho esse código que faz a consulta com o parâmetro do campo rgm no banco de dados
ResultSet retornocadastro = statementcadastro.executeQuery("SELECT * FROM cadastrotcc WHERE rgm="+t_rgm.getText());
Ou seja crio um objeto que me permite efetuar uma consulta SQL e o resultset me trás as informações depois em uma caixa de texto, só que queria ampliar a forma de consulta colocando mais alguns parâmetros>
Desde de ja agradeço-lhes
Valeu altitdb, esse site é muito bom. Só que eu preciso ampliar o “WHERE” da meu código:
ResultSet retornocadastro = statementcadastro.executeQuery("SELECT * FROM cadastrotcc WHERE rgm="+t_rgm.getText());
Neste caso ele só tem uma referencia que é o campo “rgm”, eu mando uma determinada string e o programa analisa se tem esse rgm no banco caso tiver entra o resultset. Gstaria de ampliar a forma de pesquisa e pelo que entendi só mudando o “WHERE”, no site
ResultSet retornocadastro = statementcadastro.executeQuery("SELECT * FROM cadastrotcc WHERE rgm LIKE '%" + t_rgm.getText()+ "'% OR nome LIKE " + t_nome.getText()+ " OR Codigo LIKE " + t_cod.getText()+"");
os % que eu coloquei se refere que pode conter um ou parte do que você procura, mais isso deve ser usado junto com o like…
você pode fazer LIKE ‘%A%’ : mostra todos os registros que tenham A em determinado campo!
assim tbm LIKE ‘%A’ : mostra todos os registros que tem A no final…
assim tbm LIKE ‘A%’ : mostra todos os registros que tem A no começoo…
PreparedStatement stmTeste = conexao.prepareStatement("SELECT * FROM TABELA WHERE PARAMETRO = ?")
stmTeste.setString(1,"AQUI VOCE COLOCA O VALOR DO PARAMETRO");
ResultSet rsTeste = stmTeste.executeQuery();
// Aqui efetua o loop na consulta
while(rsTeste.next()){
}
Dessa forma vc evita sql injection, e seu código fica mais limpo e eficiente.
E não consegui efetuar a pesquisa onde estou errando? Se fizer da forma coreta a a possibilidade de aumentar os parâmetros da Query? Agradeço muito pela ajuda e novamente peço deculpas pela demora em responder.
Esse “valor” que vc me perguntou é o nome do campo do banco de dados certo? Pois é essa string que preciso que retorne.
E essa linha que digitei emcima tem ir dentro de um while? Por exemplo:
PreparedStatement statementcadastro = conexaocadastro.prepareStatement("SELECT *FROM cadastrotcc WHERE rgm = ? and nome = ? and Codigo =? and email = ? and cep =? and telefone = ? and matricula =?");
ResultSet retornocadastro =statementcadastro.executeQuery();
// dentro do while estão as strings serão retornadas
while(retornocadastro.next()){
statementcadastro.setString(1,"rgm");
statementcadastro.setString(2,"Codigo");
Bom dia o “valor” é o valor que vc quer passar para o sql, por exemplo imagine que você quer o cliente com o id = 2 e o tipo dele igual a pesssoa fisica ficaria assim:
PreparedStatement statementcadastro = conexaocadastro.prepareStatement("SELECT ID, NOME FROM CLIENTE WHERE ID = ? AND TIPO = ?");
statementcadastro.setInt(1,10);
statementcadastro.setString(2,"F");
ResultSet retornocadastro = statementcadastro.executeQuery();
while(retornocadastro.next()){
system.out.println("O id do cliente é " + retornocadastro.getString("ID") + " o nome do cliente é " + retornocadastro.getString("NOME"));
}
retornocadastro.close();
statementcadastro.close();
Entendeu vc seta os parametro do sql fora do while, dentro do while vc pega o retorno do sql…
Se a sua dúvida é quanto a sintaxe da instrução, o voce pode colcar AND depois do where para aumentar a quantidade de parametros avaliados pelo select.