Dados em array

12 respostas
alexandremanowar

E ae pessoal blz!

Eu fiz uma consulta no banco de dados e quardei a informação em uma variável e enviei para o meu servlet na boa, porém só consegui fazer isso com um valor, minha dúvida é a seguinte meu minha tabela tem 3 campos e contém 21 registro quero fazer a consulta e passar todos esses registros para um array!

Como eu faço isso? Como eu passo os dados do banco para o array?
É só que falta eu aprender o restante sei fazer.
Valeu

12 Respostas

Ratao

Cria uma array para os dados. Quando pesquisar, faça um While que vai estar em loop enquanto existir um próximo registro no banco, assim, em cada loop vc armazena os dados e anda uma casa da array. :roll:

Bom, pelo que li entendi sua necessidade assim. :wink:

Giulliano

Pesquise por collections e para de usar arrays

Voce poderia usar uma List<bean> lista = new ArrayList<Bean>();

List<bean> lista = new ArrayList<Bean>();
Bean b = null;

while(rs.next){
b = new Bean();
b.setNome;
b.setEmail;
lista.add(b)
}
return lista
}
alexandremanowar

E ae pessoal blz! Valeuy pelas dicas

Então eu sei que eu tenho que criar um array e colocar ele dentro de um loop o que eu não estou sabendo fazer é como criar o loop e como devo colocar os comandos do array dentro dele. Tem como vc me dar um exemplo?

Esse collections que o Giulliano mensionou é um tipo de array certo?
Mas porque ele usa ?
Ele é melhor que o array comum? Você poderiam me explicar o funcionamento dele?

Valeu peça força

diego2005

Esse collections que o Giulliano mensionou é um tipo de array certo?

Sim, basicamente é um array que pode crescer (dinâmico).

Mas porque ele usa ?

Isso se chama Generics, e foi adicionado ao Java 5, se não me engano aqui no Guj tem um tutorial, se eu achar posto aqui depois.

Ele é melhor que o array comum? Você poderiam me explicar o funcionamento dele?

É melhor por que fica dinâmico.

Um exemplo simples:

ArrayList<String> lista = new ArrayList<String>;
lista.add("Diego");
lista.add("Alexandre");
lista.add("João");

for(String s : lista) {
    System.out.println(s);
}

T+

spycall
Faça o seguinte crie uma clase assim:
public class RegistroBean{
   private String campo1;
   private String campo2;
   private String campo3;

   public String getCampo1() {
		return campo1;
	}
	public void setCampo1(String campo1) {
		this.campo1 = campo1;
	}
	public String getCampo2() {
		return campo2;
	}
	public void setCampo2(String campo2) {
		this.campo2 = campo2;
	}
	public String getCampo3() {
		return campo3;
	}
	public void setCampo3(String campo3) {
		this.campo3 = campo3;
	}
}
depois faça assim:
List<RegistroBean> lista = new ArrayList<RegistroBean>();
   RegistroBean b = null;
 
    while(rs.next){
        b = new RegistroBean();
        b.setCampo1(rs.getString('campo1');
        b.setCampo2(rs.getString('campo2');    
        b.setCampo3(rs.getString('campo3'); 
        lista.add(b)
   }
   return lista
 }
alexandremanowar

Ea e galera valeu pela força!

Então eu fiz um aqui esta quase funcionando legal olha o código:
Nesse código eu passo duas váriaveis, uma string simples e um list:

Essa class faz a consulta no banco

/*
 * DAOUsuario.java
 *
 * Created on 17 de Julho de 2007, 22:18
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package DAO;


import java.io.*;
import java.net.*;
import java.util.*;

import java.sql.*;

import conexao.Conexao;

  

/**
 *
 * @author alexandre
 */
public class DAOUsuario 
{
    private String nome;
    private String usuario;
    
    private ResultSet rs;
    private Connection conn;
    private Statement sql; 

    /** Creates a new instance of DAOUsuario */
    public DAOUsuario() throws SQLException, IOException
    {
     conn = Conexao.connect();
    }
    
    public void setNome(String aNome) throws SQLException, IOException
    {
     nome = aNome;
     
      PreparedStatement  sql = conn.prepareStatement("select * from tabela where usuario = ?");
      sql.setString(1,nome);
      
     rs = sql.executeQuery();
      
      while(rs.next())
      {
        usuario = rs.getString("nome");
      }
     
     
     
    }
    
    public  List getLista() throws SQLException
    {
        PreparedStatement sql = conn.prepareStatement("select * from tabela");
        rs = sql.executeQuery();
        
        List lista = new ArrayList();
        
        while(rs.next())
        {
            lista.add(rs.getString("nome"));
        }
        
        return lista;        
        
    }
    
    public String getUsuario()
    {
        return usuario;
    }
    
    
    
}

Essa class recebe os dados capturados do banco pela class acima:

/*
 * ValidaUsuario.java
 *
 * Created on 17 de Julho de 2007, 22:04
 */

package Validacao;


import DAO.DAOUsuario;
import java.io.*;
import java.net.*;
import java.sql.SQLException;

import javax.servlet.*;
import javax.servlet.http.*;

import Interfaces.InterfaceUsuario;

/**
 *
 * @author alexandre
 * @version
 */
public class ValidaUsuario extends HttpServlet {
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    
    private String nome;
    private String usuario;
    private int erro;
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException, SQLException 
    {
    
        nome = request.getParameter("nome");
    
        InterfaceUsuario validar = new InterfaceUsuario();
        
        validar.setNome(nome);
        erro = validar.getErro();
        
          
        if(erro == 0)
        {
     
          DAOUsuario resultado = new DAOUsuario();
          resultado.setNome(nome);
          
          request.setAttribute("usuario",resultado);
          request.setAttribute("lista",resultado.getLista());
          
          RequestDispatcher view = request.getRequestDispatcher("home.jsp");
          view.forward(request,response);
        }
        else
        {
            System.out.println("Erro aqui");            
        }
        
        
    }
    

}

Essa é a jsp que imprime os resultados na tela:

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

    <h1>JSP Page<br></h1>

        String de nome simples: <font color="red"> ${usuario.usuario} </font><br>
        Lista de nomes com List:<font color="blue">
        <table>
            <c:forEach var="lista" items="${lista}">
                <tr>
                    <td>${lista}</td>
                </tr>
                
            </c:forEach>
            
        </table>
    </body>
</html>

O problema é que a jsp esta exibindo os dados do List assim:

[Alexandre, Administrador Filiais, Márcia laura, André Muraro, André Muraro]

Ou seja dentro de cochetes e uma linha direta, a idéia é que ele exiba assim:

Alexandre
Administrador Filial
Marcia laura
André Muraro
André Muraro

Com vcs podem observar na JSTL eu fiz dessa forma:
[b]
<c:forEach var=“lista” items="${lista}">


${lista} [/b] Ou seja no loop tem uma tabela logo deveria exibir um abaixo do outro. Onde estou errando? Existe uma forma melhor de fazer isso?

Valeu a todos

alexandremanowar

E ae galera ainda não consegui resolver o problema do post que deixei acima. Onde ele esta listando tudo na mesma linha.
Alguém pode me ajudar?

Valeu

Giulliano

Quando vc imprime uma List…tem que pegar o bean…

Por exemplo

um bean Pessoa com uma varíavel String nome;

uma List<Pessoa>

no seu jsp vc faria

<c:forEach var="lista" items="${lista}"> 
<tr> 
<td>${lista.nome}</td> 
</tr> 
</c:forEach>

atenção no ${lista.nome}

do jeito qe vc fez…acredito que vc esteja pegando todos os valores de uma paulada só…

alexandremanowar

Ea e galera blz

Então eu fiz um arrayList aqui e não esta funcionando olha o código:
Nesse código eu passo duas váriaveis, uma string simples e um list:

Essa class faz a consulta no banco

/*
 * DAOUsuario.java
 *
 * Created on 17 de Julho de 2007, 22:18
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package DAO;


import java.io.*;
import java.net.*;
import java.util.*;

import java.sql.*;

import conexao.Conexao;

  

/**
 *
 * @author alexandre
 */
public class DAOUsuario 
{
    private String nome;
    private String usuario;
    
    private ResultSet rs;
    private Connection conn;
    private Statement sql; 

    /** Creates a new instance of DAOUsuario */
    public DAOUsuario() throws SQLException, IOException
    {
     conn = Conexao.connect();
    }
    
    public void setNome(String aNome) throws SQLException, IOException
    {
     nome = aNome;
     
      PreparedStatement  sql = conn.prepareStatement("select * from tabela where usuario = ?");
      sql.setString(1,nome);
      
     rs = sql.executeQuery();
      
      while(rs.next())
      {
        usuario = rs.getString("nome");
      }
     
     
     
    }
    
    public  List getLista() throws SQLException
    {
        PreparedStatement sql = conn.prepareStatement("select * from tabela");
        rs = sql.executeQuery();
        
        List lista = new ArrayList();
        
        while(rs.next())
        {
            lista.add(rs.getString("nome"));
        }
        
        return lista;        
        
    }
    
    public String getUsuario()
    {
        return usuario;
    }
    
    
    
}

Essa class recebe os dados capturados do banco pela class acima:

/*
 * ValidaUsuario.java
 *
 * Created on 17 de Julho de 2007, 22:04
 */

package Validacao;


import DAO.DAOUsuario;
import java.io.*;
import java.net.*;
import java.sql.SQLException;

import javax.servlet.*;
import javax.servlet.http.*;

import Interfaces.InterfaceUsuario;

/**
 *
 * @author alexandre
 * @version
 */
public class ValidaUsuario extends HttpServlet {
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    
    private String nome;
    private String usuario;
    private int erro;
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException, SQLException 
    {
    
        nome = request.getParameter("nome");
    
        InterfaceUsuario validar = new InterfaceUsuario();
        
        validar.setNome(nome);
        erro = validar.getErro();
        
          
        if(erro == 0)
        {
     
          DAOUsuario resultado = new DAOUsuario();
          resultado.setNome(nome);
          
          request.setAttribute("usuario",resultado);
          request.setAttribute("lista",resultado.getLista());
          
          RequestDispatcher view = request.getRequestDispatcher("home.jsp");
          view.forward(request,response);
        }
        else
        {
            System.out.println("Erro aqui");            
        }
        
        
    }
    

}

Essa é a jsp que imprime os resultados na tela:

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

    <h1>JSP Page<br></h1>

        String de nome simples: <font color="red"> ${usuario.usuario} </font><br>
        Lista de nomes com List:<font color="blue">
        <table>
            <c:forEach var="nomes" items="${lista}">
                <tr>
                    <td>${nomes}</td>
                </tr>
                
            </c:forEach>
            
        </table>
    </body>
</html>

Ele siplesmente não esta exibindo nada na lista. Onde estou errando?

Fiz uns testes diferentes mas os que não deram erro de página ficou em branco também
Alguém pode corrigir esse meu codigo? Onde estou errando?
Valeu a todos

alexandremanowar

E a e galera preciso de uma forcinha com esse problema que postei ainda não consegui fazer. Se alguém poder me da uam força aí porque já tentei de vária forma e só da erro.
Valeu

alexandremanowar

Galera eu olhei vários tutoriais e não consegui entender essa minha falha!
Se alguém poder mostrar onde estou errando? Pelos tutoriais que eu olhei esta tudo certo não consigo achar.
Preciso de ajuda

Valeu

alexandremanowar

E pessoal blz

Depois de horas de tentativas e revisão de código, descobri que o meu erro estava no lugar que eu menos imaginei e foi um amigo que me mostrou eu não estava declarando a chamado do taglib:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

Eu não acredito que dei um vacilo desses! olhei vários tutoriais e o problema era tão simples. Declarei e pronto funcionou na boa.

Aproveitando o tópico nesse exemplo que eu fiz eu pego o campo nome da minha tabela e coloco dentro do List e se eu quiser pegar as outras colunas na tabela tipo endereco,bairro e cep automáticamente o resultado seria:

Alexandre endereco bairro cep
Administrador Filial endereco bairro cep
Marcia laura endereco bairro cep
André Muraro endereco bairro cep
André Muraro endereco bairro cep

É possível colocar colunas na linha do array, porque o que fiz no exemplo anterior foi criar um array de linhas e se precisar criar um com linhas e colunas é possível? Como eu faço?

Valeu

Criado 31 de julho de 2007
Ultima resposta 15 de ago. de 2007
Respostas 12
Participantes 5