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
Problemas com sql! heeelp!
11 Respostas
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
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!
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
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 !
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!
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…
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…
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:
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)
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!
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 