Dúvida ResultSet rs = stmt.executeQuery(query)?

5 respostas
A
public void Pesquisa() 
{
       String query = "SELECT * FROM tabela WHERE nome = 'adriano'" ; 
       // funciona 
   ou
       String query = "SELECT * FROM tabela WHERE nome Like 'a*'";      
        // não funciona

        String url = "jdbc:odbc:AgendaDados";
				
        try
        {
	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	Connection con = DriverManager.getConnection (url, "", "");
	Statement stmt = con.createStatement();

	ResultSet rs = stmt.executeQuery(query);  	
		
	rs.close();
	stmt.close();
	con.close();
         }
         catch (SQLException ex) 
        {  
	System.out.println ("SQLException:");
	while (ex != null) 
	{  
	     System.out.println("SQLState: " + ex.getSQLState());
	     System.out.println("Message:  " + ex.getMessage());
	     System.out.println("Vendor:   " + ex.getErrorCode());
	     ex = ex.getNextException();
	}
         }
         catch (java.lang.Exception ex)
         {
	ex.printStackTrace();
          }
} // fim void Pesquisa()
no código acima estou tendo problemas quando acesso minha base de dados access. quando uso:

String query = "SELECT * FROM tabela WHERE nome = 'adriano'" ;
ResultSet rs = stmt.executeQuery(query);

funciona perfeitamente, o ResultSet recebe os dados relativos ao nome 'adriano', mas quando eu executo:

String query = "SELECT * FROM tabela WHERE nome Like 'a*'";
ResultSet rs = stmt.executeQuery(query);

não funciona e não retorna nenhum erro, não acontece nada, é como se o ResultSet recebesse o valor null. Eu queria que ResultSet recebesse todos os nomes começados com 'a' que estão no banco de dados.
Eu já testei esse comando no access e funciona. Quando se usa curingas (? ou *) no access, usa-se Like no lugar de igual. O que está dando errado então??? Se alguém puder me ajudar...

obrigado

[color="darkblue"]Editado por Tomaz Lavieri, Favor colocar o BBCode[/color]

5 Respostas

H

Coloque o ‘%’ no lugar do ‘*’

String query = "SELECT * FROM tabela WHERE nome Like 'a%'"; ResultSet rs = stmt.executeQuery(query);

A

Heber voce resolveu meu problema,

mas eu fiquei com uma dúvida, se no access os curingas são ‘?’ e ‘*’, eu imaginei que funcionariam nesse meu programa . No access o curinga ‘%’ não funciona.
Por que no java só funcionou com o ‘%’ ??? já que estou usando uma base de dados access???

obrigado !!!

T

Isso não é do access e nem do java… e sim do SQL… o coringa % em SQl siginifica que qualquer caracter é aceito =]

“%teste%” … pro sql… vai tentar buscar qualquer texto q tenha a palavra teste no meio… ele aceita tanto… “meu 1º teste =]” como “teste” serão encontrados pela busca

“adrianodonisete”:
Heber voce resolveu meu problema,

mas eu fiquei com uma dúvida, se no access os curingas são ‘?’ e ‘*’, eu imaginei que funcionariam nesse meu programa . No access o curinga ‘%’ não funciona.
Por que no java só funcionou com o ‘%’ ??? já que estou usando uma base de dados access???

obrigado !!!

A

Tomaz

muito obrigado pela atenção…

agora eu entendi…

eu até tinha pensado nisso, mas tava achando estranho, porque no access o curinga ‘%’ não funciona, se o access também usa SQL, esse curinga tambem deveria funcionar… não é?

até mais

J

Kra no Access funciona o % sim…

trabalhei um ano com ele… eh normal…

soh que eh um lixo, as vezes ele faz uma coisa, as vezes faz outra…

bem lixo mesmo…

Criado 29 de março de 2004
Ultima resposta 30 de mar. de 2004
Respostas 5
Participantes 4