?guardar banco em array?

4 respostas
cesar340

sei que pode ter gente que leia e pense “que ridiculo”, mas estou começando com java agora e tenho uma duvida!
por exemplo… exibo os dados do banco em uma tabela da seguinte maneira:

//zerando toda a tabela (deixado-a vazia)
    ((DefaultTableModel) jTable1.getModel()).setNumRows(0);
    jTable1.updateUI(); 
    
    //fazendo a inserção dos dados na tabela
    try
        {
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            conexao = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:\\teste\\CADASTROS.FDB", "SYSDBA", "masterkey");
            statement = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            resultset = statement.executeQuery("select * from tb_clientes where dat='" + jTDataParaPesquisa.getText() + "'");
            
            int i = 0;
            while(resultset.next()){
                DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
                modelo.addRow(new String[] {Integer.toString(resultset.getInt("cod")),resultset.getString("nome"),resultset.getString("endereco"),resultset.getString("email"),resultset.getString("telefone"),resultset.getString("estado"),resultset.getString("sexo"),resultset.getString("interesses"),resultset.getString("biografia"),resultset.getString("dat")});
                i++;
            } 
            
        }
    
        catch(ClassNotFoundException Driver)
        {
            JOptionPane.showMessageDialog(null, "Driver não localizado: ");
        }
        catch(SQLException Fonte){
            JOptionPane.showMessageDialog(null, "Erro na conexão com a fonte " + Fonte);
        }
    
    //fechando conexao
    conexao = null;

beleza, mas agora preciso fazer um filtro para pesquisar no banco e pelo que eu vi (pode estar errado), eu tenho que colcoar todos os dados do banco em um array e dps fazer a pesquisa no array e nao no banco!

explicando melhor: faço um select * from tabela. e guardo essas informações em um array!
ae quero fazer uma busca por data de cadastramento e quando eu digitar 2011 ja aparecer TODOS os registros feitos em 2011
quando eu completa 2011-05 mostar todos registros criados no mes 05 do ano 2011 e quando colocado 2011-05-22 aparecer os dados do dia!

mas pra esse filtro nao vou pesquisar no banco de dados, e sim no array que esta guardado um select * from tabela do banco

alguem sabe me dizer algo sobre isso? ou estou totalmnete equivocado???

4 Respostas

nel

Oi.

Buscar em uma Lista e não no banco de dados deve ser tratado em casos extremamente específicos.
De qualquer forma, ainda corre o risco de estar faltando informações nessa Lista, informações das quais estão cadastradas no banco.
O ideal é que você monte um select e realize a busca com os parâmetros informados, de modo que o mesmo traga os devidos registros.
Assim, tu tem a certeza que a informação está atualizada.

Você pode consultar a sua Lista ao invés do banco se quiser tratar um evento de uma tabela , por exemplo. Quiser filtrar os itens dela.
Mas teria de ter um botão de “refresh” ou algo do tipo. Mas enfim, pense, analise e veja a melhor saída.

Abraços.

cesar340

pois é preciso faze essa consulta e meu chefe que me indicou colocar os dados em um array para depois pesquisar…
to dando uma olhada por aqui, se alguem tiver dicas e informações a respeito, ficarei grato.

nel

cesar340:
pois é preciso faze essa consulta e meu chefe que me indicou colocar os dados em um array para depois pesquisar…
to dando uma olhada por aqui, se alguem tiver dicas e informações a respeito, ficarei grato.

O seu chefe que te orientou a fazer isso? Sei.
Estamos falando e desktop, web? Enfim, analise colega. A consulta SQL é bem rápida e não deixar objetos em memória sem uso.

cesar340

na real mesmo nao precisaria colocar em um array (esse eh um jeito utilizado pelo c++)
o qu eeu preciso eu falei ali:
tenho um campo data no banco de dados
e preciso fazer um filtro por data!
isso eh facil, fiz assim:

//zerando toda a tabela (deixado-a vazia)
    ((DefaultTableModel) jTable1.getModel()).setNumRows(0);
    jTable1.updateUI(); 
    
    //fazendo a inserção dos dados na tabela
    try
        {
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            conexao = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:\\teste\\CADASTROS.FDB", "SYSDBA", "masterkey");
            statement = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            resultset = statement.executeQuery("select * from tb_clientes where dat='" + jTDataParaPesquisa.getText() + "'");
            
            int i = 0;
            while(resultset.next()){
                DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
                modelo.addRow(new String[] {Integer.toString(resultset.getInt("cod")),resultset.getString("nome"),resultset.getString("endereco"),resultset.getString("email"),resultset.getString("telefone"),resultset.getString("estado"),resultset.getString("sexo"),resultset.getString("interesses"),resultset.getString("biografia"),resultset.getString("dat")});
                i++;
            } 
            
        }
    
        catch(ClassNotFoundException Driver)
        {
            JOptionPane.showMessageDialog(null, "Driver não localizado: ");
        }
        catch(SQLException Fonte){
            JOptionPane.showMessageDialog(null, "Erro na conexão com a fonte " + Fonte);
        }
    
    //fechando conexao
    conexao = null;

beleza eu digito a data em um jTextField e ao clicar no botao ele faz este procedimento…

porem, agora devo fazer com que ele faça essa pesquisa por data porem ser apertar algum botao, e sim somente digitando no jTextField!
como usa firebird o padrao de data eh AAAA-MM-DD

entaaaaaaaaao…

quando digitado 2011 na jTextField ja deve aparecer na tabela TODOS os registros com na data o ano de 2011
quando digitado 2011-05 no jTextField deve aparecer todos os registros do mes de maio de 2011
e quando colocado 2011-05-14 no jTextField deve aparecer os registros feitos naquele dia

compreendeu???

como faazer isso? to apavorado!
no meu pensamento se eu colocar 2011 e fizer um select vai dar erro, ja começa por ae a minha duvida!

bom to arrecem aprendendo, e arrecem começei a pesquisar sobre isto!
caso ache algo postarei aqui!
valeu

Criado 11 de janeiro de 2012
Ultima resposta 11 de jan. de 2012
Respostas 4
Participantes 2