Problemas com sql! heeelp!

11 respostas
B

povo… primeiro, parabens pelo fórum! muito bom!
bom…
seguinte
minha equipe na facul tem um trabalhim em java para entregar 5a feira agora.
econtramos um problema que está empatando o trabalho…
o lance é o seguinte
é uma agenda de contatos com banco de dados … td em jdbc.
bom
em uma parte do programa temos 4 campos
NOME, ENDEREÇO TELEFONE E OBSERVACOES.
de acordo com o campo que o usuário digita, montamos um sql e fazemos a consulta.
acontece que o sql não está funcionando.
assim
ele monta o sql
só que quando ele roda não acontece nada.
demos um printline para v o sql e, se a gente copia ele na mao, e o executamos, ele FUNCIONA.
não sei… parece que não da para acumular o sql numa variavel e jogar essa variavel pro execute query.
alguem pode dar uma ajuda?
valeu gente

11 Respostas

J

Ola,
Com certeza da p/ atribuir uma query a uma variavel String e passa-la no metodo executeQuery.Vc tem que verifcar se a conexão esta OK, criar o Statement e depois o ResultSet.Se vc postar o codigo talves alguem possa te ajudar mais.

[]´s

B

“jgbt”:
Ola,
Com certeza da p/ atribuir uma query a uma variavel String e passa-la no metodo executeQuery.Vc tem que verifcar se a conexão esta OK, criar o Statement e depois o ResultSet.Se vc postar o codigo talves alguem possa te ajudar mais.

[]´s


vou ver se aparece alguem da facul pra eu pegar o programa… pq agora to no serviço.
mas seguinte
ele monta sql certinho
so q se a gente manda rodar o sql dessa variavel string q recebe o sq montado… ele nao faz.
porem se a gente copia na mao … tipo " select nome from tabela" ele vai e roda…
parece q ele perde alguma coisa.
teve uma vez q comparamos o sql q ele monta com um q a gente escreveu na mao e estavam idênticos.
porem nao roda.
assim q o cara aparecer eu coloco aki
valeu!

J

Ola,
Vc ja tentou passar a String direto no metodo executeQuery? Assim ja da p/ ver se a sua query ta legal.Vc ta usandoSwing?Talves o problema esteja na hora de setar o novo valor do TextField.

[]'s

B

“jgbt”:
Ola,
Vc ja tentou passar a String direto no metodo executeQuery? Assim ja da p/ ver se a sua query ta legal.Vc ta usandoSwing?Talves o problema esteja na hora de setar o novo valor do TextField.

[]'s


oi… ja sim
iisso q eu tava comentando.
se vc passa a string completa pro execute ele roda normalmente o sql
agora
se vc monta o sql, joga numa variavel e passa essa variavel ao execute, é q ele nao funciona.
é muito estranho pq eles (o sql) tanto o q a string qto o q ele monta são exatamente os mesmos, mas nao funciona.
e tipo
a gente colocou um System.out.println pra ele mostrar a string q contem o sql pra gente enquanto roda o programa
dai se a gente copia esse sql q ele gera e cola numa string e manda rodar…
ele funciona!
to ficando sem ideia ja
tentei de tudo !

B

ah é
a gente ta usando o swing sim
ai no final… dpeois dele montar o resultado
a gente jova tudo pra um jlist .
to mandando email pro cara q ta com o programa pra v se ele aparece aqui.
assim q ele vier eu posto essa parte do codigo pra vcs entenderem melhor!

B
entao consegui o  trecho do codigo problematico

é o seguinte

na tela temos 4 campos : nome,endereco, telefone e observacao

o usuario digita em qualquer um dele e clica em PROCURAR

qdo ele faz isso nós vamos montar o sql pra procurar somente pelos campos em q o cara digitou se ele digita so nome. .vamos pesquisar so por nome.

dai tem o codigo abaixo:

if(e.getSource()==bt_procurar)//botao para acessar o painel de procura p/ exclusão -

{

//Expsql="SELECT ";

vNome=T1.getText();

vEnd=T2.getText();

vTel=T3.getText();

vObs=texto.getText();

String Juntand = “”;

String Juntavir = “”;
if (!(vNome.equals ("") ))
   {
 vCampos+= "nome";
       vLike+= "nome LIKE '%"+vNome+"%' ";
   }


if (!(vEnd.equals ("") ))
   {
if (!(vNome.equals ("") ))

{

Juntand =" AND “;

Juntavir =”, ";

}
vCampos+= Juntavir + " endereco ";
       vLike+= Juntand + "endereco LIKE '%"+vEnd+"%' ";
       Juntand = "";
       Juntavir = "";
   }


if (!(vTel.equals ("") ))
   {
 if((!(vNome.equals (""))) || (!(vEnd.equals ("") )))
         {
           Juntand =" AND ";
           Juntavir =", ";
   }

 vCampos+= Juntavir + " telefone ";
       vLike+= Juntand + "telefone LIKE '%"+vTel+"%' ";
       Juntand = "";
       Juntavir = "";
   }

if (!(vObs.equals ("") ))
   {
 if( (!(vNome.equals (""))) || (!(vEnd.equals (""))) || (!(vTel.equals (""))) )
         {
   Juntand =" AND ";
            Juntavir =", ";
   }

    vCampos+= Juntavir + " tarefas ";
       vLike+= Juntand + "tarefas LIKE '%"+vObs+"%' ";
       Juntand = "";
       Juntavir = "";
   }

 Expsql+="SELECT "+vCampos +" FROM agenda WHERE "+vLike;
 System.out.println(Expsql);
 //System.out.println(teste);
 System.out.println(vEnd);
 System.out.println(vTel);
 System.out.println(vObs);

 JFrame j = new agenda(vNome,vEnd,vTel,vObs,"");
 j.show();
[b]por exemplo se o cara digita so algo no nome(z) e telefone(t)

ele teria q gerar esse sql:

SELECT nome, telefone FROM agenda WHERE nome LIKE %z% AND telefone LIKE %t%’”;

ele gera
so q se eu jogo esse sql na variavel pra rodar… ele nao mostra o resultado…
porem se eu escrever esse sql na execute query ele funciona!

abaixo segue a parte q ele conecta no banco… vou por so o try[/b]

try
  {
   	   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 	   Connection cd = DriverManager.getConnection(url);
 	   Statement s = cd.createStatement();
   ResultSet rs = s.executeQuery(Expsql);
      System.out.println(rs);
	   while(rs.next())
	   {
  	  	  String Fnome = rs.getString("nome"); //[b] nesse trecho estramos por enquanto pegando apenas o campo nome.[/b]
		         dlm.addElement(Fnome);
		         System.out.println(Fnome);

	   }

  	   cd.close();

    }//FIM TRY

pois é gente
ja nao sei o q fazer
se alguem puder ajudar…

F

Cara , olehi rapidamente , mas acho que a sintax do sql ta errada, vc coloca uma va´riavel para receber a letra digitada e na sintaxe tenta colocar assim…
like’"+campo.getText()+"’"

vouy dar um aolhada melhor depois posto aqui mais

Lembre-se que para gravar uma string deve ter o “pitoco” antes e depois das aspas

’ “xxx” ', se for enteiro num precisa só as aspas…

B

“FelipeSS_2”:
Cara , olehi rapidamente , mas acho que a sintax do sql ta errada, vc coloca uma va´riavel para receber a letra digitada e na sintaxe tenta colocar assim…
like’"+campo.getText()+"’"

vouy dar um aolhada melhor depois posto aqui mais

Lembre-se que para gravar uma string deve ter o “pitoco” antes e depois das aspas

’ “xxx” ', se for enteiro num precisa só as aspas…

po cara… valeu mesmo
t agradeço muito
vou tentar rever hj tb qdo chegar da faculdade à noite
po valeu! :lol:

F

Beleza, tente corrigir a sua sintaxe SQL, pois ta bem confusa, e como vc mesmo disse quando vc escreve diretamente do sql query analize, tudo funcioan né… Poi provavelmente ta tudo certo , mas deve ter erros mesmo na sintaxe uma aspas, uma aspoas simples, um sinal de =…qualquer coisa assim…Olha la e poste se deu certo e o que vc tentou!!!

Outra coisa, vc quer imprimir um resultado no num JTextList???

Coloca ao invez de out.prin por que vc n~çao usa…
JTextList tx…

tx.setText(variavel_resultado_da_pesqueisa)

B

gente… consegui.
de alguma forma ele tava perdendo a string armazenada
dai eu passei ela por parâmetro pra o programa q monta a lista e funcionou perfeitamente.
quero agradecer a todos q d alguma forma apareceram aqui pra me dar uma ajuda!
valeu mesmo!
brigadão!

F

“BluesmanJF”:
gente… consegui.
de alguma forma ele tava perdendo a string armazenada
dai eu passei ela por parâmetro pra o programa q monta a lista e funcionou perfeitamente.
quero agradecer a todos q d alguma forma apareceram aqui pra me dar uma ajuda!
valeu mesmo!
brigadão!

Beleza :smiley:

Criado 29 de setembro de 2003
Ultima resposta 30 de set. de 2003
Respostas 11
Participantes 3