Parâmetros para consulta ao banco de dados [resolvido]

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

Tem sim!!

http://www.w3schools.com/sql/default.asp

Esse link tem varios exemplos de instruções!!

WHERE, LIKE, etc.

xD~~

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

Cara…

vc ker colocar varios parametros para serem procurados eh isto?

 ResultSet retornocadastro = statementcadastro.executeQuery("SELECT * FROM cadastrotcc WHERE rgm=" + t_rgm.getText() + " AND campo2 = " + tf2.getText() + " AND campo3 = " + tf3.getText());  

Desse jeito que você quer fazer?? Assim ele pode procurar por mais campos!!

Desculpe se não fui claro, é que não entendi muito bem.

xD~~

Bom eu fiz assim:

 ResultSet retornocadastro = statementcadastro.executeQuery("SELECT * FROM cadastrotcc WHERE rgm=" + t_rgm.getText()+ " AND nome = " + t_nome.getText()+  " AND Codigo = " + t_cod.getText()+"");
            retornocadastro.next();
            t_nome.setText(retornocadastro.getString("nome"));
            t_curso.setText(retornocadastro.getString("curso"));
            t_cod.setText(retornocadastro.getString("Codigo"));
            t_email.setText(retornocadastro.getString("email"));
            f_cep.setText(retornocadastro.getString("cep"));
            f_tel.setText(retornocadastro.getString("telefone"));
            f_matricula.setText(retornocadastro.getString("matricula"));
            f_saldo.setText(retornocadastro.getString("saldo"));
            t_endereco.setText(retornocadastro.getString("end"));
            t_numcasa.setText(retornocadastro.getString("numero_da_casa"));
            t_rgm.setEditable(false);
            statementcadastro.close();
            conexaocadastro.close();

E da erro. O código não apresenta erro de sintaxe mais não da certo.

Agora sim entendi!!

Você pode fazer assim…

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…

da uma testada ae…

xD~~

Bom dia altitdb, agradeço-lhe pela ajuda mas continua dando erro. Peço desculpas pela demora em responder. :smiley:

antes de setar os campos no seu objeto vc tem quer fazer um rs.next().

Fica mais o menos assim :

if ( rs.next() ) {

//seta os atributos da forma que vc fez

}

Amigo, não use o Statement, faça assim:

	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.

Boa noite.
Bom Lucas_carvalho eu fiz dessa forma

PreparedStatement statementcadastro = conexaocadastro.prepareStatement("SELECT *FROM cadastrotcc WHERE rgm = ?");
            statementcadastro.setString(1,"rgm");
            ResultSet retornocadastro =statementcadastro.executeQuery();                       
            while(retornocadastro.next()){

            t_nome.setText(retornocadastro.getString("nome"));
            t_curso.setText(retornocadastro.getString("curso"));
            t_cod.setText(retornocadastro.getString("Codigo"));
            t_email.setText(retornocadastro.getString("email"));
            f_cep.setText(retornocadastro.getString("cep"));
            f_tel.setText(retornocadastro.getString("telefone"));
            f_matricula.setText(retornocadastro.getString("matricula"));
            f_saldo.setText(retornocadastro.getString("saldo"));
            t_endereco.setText(retornocadastro.getString("end"));
            t_numcasa.setText(retornocadastro.getString("numero_da_casa"));
            t_rgm.setEditable(false);
            }
statementcadastro.close();
            conexaocadastro.close();

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.

E ai Lucas blz?

Então sem o ver a msg de erro é complicado… Mas me diz uma coisa o valor do paramametro é rgm mesmo?

statementcadastro.setString(1,"rgm" >> Esse aqui é o valor que o sql espera?);

É possível sim colocar mais parametros na query, acho que não tem limite (ou eu nunca cheguei nele) para fazer com mais parametro você faz assim:

PreparedStatement statementcadastro = conexaocadastro.prepareStatement("SELECT * FROM cadastrotcc WHERE rgm = ? and parametro2 = ? and parametro3 = ?");  
statementcadastro.setString(1,"rgm");  
statementcadastro.setString(2,"Valor");  
statementcadastro.setString(3,"Valor");  

Entendeu ? Você vai aumentando conforme a sua necessidade.

Quando você responder posta o erro que esta dando.

Bom dia.

statementcadastro.setString(2,"Valor");   

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");

Obrigado

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…

Qualquer duvida posta ai novamente…

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.

Agradeço a todos a ajuda e peço desculpas por não responder rapidamente.