Estou tentando fazer o autocompletar numa tsxtfield, consegui fazer funcionar em partes tenho a minha jsp principal e uma getdata.jsp onde ela paga os dados do banco de dados, só que quando lista os dados aparece junto os aracretes : [ ] , do array e a acentuação fica tudo esquisito, também queria enviar para o getdata aquilo que for digitado e no getdata usar o Select com o LIKE e retornar os valores numa lista para o principal.jsp, veja o meu código:
getdata.jsp<%Stringsql="";ConnectiondbCon;List<String>array=newArrayList();//String query = request.getParameter("nomecdp");try{Class.forName("org.postgresql.Driver");Stringa="jdbc:postgresql://localhost:5432/cdpforum";dbCon=DriverManager.getConnection(a,"Usuario","senha");java.sql.Statements=dbCon.createStatement();//sql = " select cdpnome from cdp where LIKE cdpnome='"+query+"%'";sql=" select cdpnome from cdp";ResultSetrs=s.executeQuery(sql);while(rs.next()){array.add(rs.getString("cdpnome");+"\n");}rs.close();s.close();}catch(ClassNotFoundExceptione){System.out.println("Erro de configuracao"+e.getException());}catch(SQLExceptionsqle){System.out.println("Erro de SQL:"+sqle.getMessage()+" - "+sql);}response.getWriter().println(array);%>
você tem que converter o array em string antes de imprimi-lo no jsp.
essa query: " select cdpnome from cdp where LIKE cdpnome=’"+query+"%’"
acho que o correto é mais ou menos isso: " select cdpnome from cdp where cdpnome LIKE '"+query+"%'"
não testei, to tentando deduzir isso.
A
alexwebsp
douglaskd
arrumei desta forma :
Stringsql="";ConnectiondbCon;Stringvalores="";try{Class.forName("org.postgresql.Driver");Stringa="jdbc:postgresql://localhost:5432/cdpforum";dbCon=DriverManager.getConnection(a,"Alex","mattos");java.sql.Statements=dbCon.createStatement();sql=" select cdpnome from cdp";ResultSetrs=s.executeQuery(sql);while(rs.next()){Stringnome=rs.getString("cdpnome").toString();valores+=nome+"\n";}rs.close();s.close();}catch(ClassNotFoundExceptione){System.out.println("Erro de configuracao"+e.getException());}catch(SQLExceptionsqle){System.out.println("Erro de SQL:"+sqle.getMessage()+" - "+sql);}response.getWriter().println(valores);
Deu certo, mas ainda os caracteres com acentuação fica aparecendo pequenos quadrados no lugar.
referente ao banco de dados minha classe ficou assim :
Stringsql="";ConnectiondbCon;Stringvalores="";Stringquery=request.getParameter("q");Stringnome="";try{Class.forName("org.postgresql.Driver");Stringa="jdbc:postgresql://localhost:5432/cdpforum";dbCon=DriverManager.getConnection(a,"Usuario","senha");java.sql.Statements=dbCon.createStatement();sql=" select nome from cdp where nome ilike '%"+query+"%'";ResultSetrs=s.executeQuery(sql);while(rs.next()){valores+=rs.getString("nome").toString();valores+=nome+"\n";}rs.close();s.close();}catch(ClassNotFoundExceptione){System.out.println("Erro de configuracao"+e.getException());}catch(SQLExceptionsqle){System.out.println("Erro de SQL:"+sqle.getMessage()+" - "+sql);}response.getWriter().println(valores);
só que tem mais problema:
Exemplo: se eu digitar a letra “a” só aparece para mim 10 opções mas se eu fizer uma pesquisa com a mesma query no banco de dados, me volta 30 registros, se eu não colocar “\n” me retorna os 30 registros sem pular linha, mas se colocar “\n” pula linha mas só me aparece 10 registros. Por favor me ajude ! Obrigado !
D
douglaskd
tenta usar + " " ao invés do + “/n”
A
alexwebsp
Vou postar a solução se alguém se alguém precisar:
getdata.jsp
Stringsql="";ConnectiondbCon;Stringvalores="";try{Class.forName("org.postgresql.Driver");Stringa="jdbc:postgresql://localhost:5432/bancodedados";dbCon=DriverManager.getConnection(a,"Usuario","senha");java.sql.Statements=dbCon.createStatement();sql=" select nome from usuario";ResultSetrs=s.executeQuery(sql);while(rs.next()){Stringnome=rs.getString("nome").toString();valores+=nome+"\n";}rs.close();s.close();}catch(ClassNotFoundExceptione){System.out.println("Erro de configuracao"+e.getException());}catch(SQLExceptionsqle){System.out.println("Erro de SQL:"+sqle.getMessage()+" - "+sql);}response.getWriter().println(valores);