Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0
por isso que não estava passando os numeros…
pmlm
Como obtens esse rowcount? Qual o seu valor quando executas?
C
Clowbr15
eu passo 0 pra ele … mais preciso que ele seja a quantidade de vezes que o banco retorna.
ou seja se eu tiver 2 registros quero que ele seja 2 …
sei até como fazer isso …
while (rs.next()){ rowcount = rowcount+1}
mais se faço isso não consigo correr com meu rs depois … terei que fazer a query no banco novamente …
pmlm
Aqui está o teu erro…
Mas aqui já criaste o array e o tamanho não vai mudar.
Tens de usar obrigatoriamente array neste trabalho?
Se sim, deves fazer primeiro uma outra query com o count(*) para saberes o número de registos.
Se não, podes usar ArrayList, que não é preciso definir inicialmente o tamanho.
C
Clowbr15
quando eu uso array list tenho que fazer um for Interetor … mais não sei utilizar direito … porque não consigo dizer pro interator como adicionar meus campos na outra dimensao
não sei usar muito bem o array list
por exemplo …
eu ate populo ele mais quando vou pegar as variaveis … não sei como fazer o add
pmlm
Sem complicar mais, e pegando neste exemplo, so precisas de fazer antes:
PreparedStatementstmtCount=conn.prepareStatement("SELECT COUNT(*) as total FROM ......");ResultSetrsCount=stmtCount.executeQuery();introwcount=0;if(rsCount.next()){rowcount=rsCount.getInt("total");}//oteucodigoatualPreparedStatementstmt=....ResultSetrs=stmt.executeQuery();String[][]viagensSiigre=newString[rowcount][4];
C
Clowbr15
acabei de fazer isso … muito obrigado mesmo … funcionou … mais ta trazendo linhas duplicadas … vou analizar aqui minha logica … mais tive que abrir outra consulta mesmo …
pmlm
Ha uma maneira de não ter de fazer esta consulta “extra” que era, na tua consulta inicial, deslocar o resultset para o final e obter o numero de linhas e depois voltar a deslocar para o inicio para leres as linhas. Esta prática é desaconselhada uma vez que para chegares ao fim do result set estás a ler todos os dados e a descartar para depois voltares a ler e utilizar. Em result sets grandes esta operação pode ser pesada.
A melhor forma é mesmo fazer a conulta adicional da contagem.
massa mesmo … ficou lindo demais assim … dessa forma até parece facil … como pode né …
entender das coisas é muito bom … amigo … muito obrigado … assim que terminar esse projeto vou te abençoar com $$ … só esperar … gosto de fazer parcerias … hehe =)
pmlm
Isto é trabalho de escola? Na “vida real” deverias usar um objecto e não as 4 posições do array
C
Clowbr15
vou usar esse array pra comparar com outros dados que ainda vou puxar do banco …
como seria esse padrão de objetos…
C
Clowbr15
esse foi pra popular o array com as viagens ocorridas
viagenssiigre[][]
vou montar outro array do mesmo jeito com outra query
viagensoutro[][]
e vou comparar os valores …
vc acha uma boa solução ?
pmlm
Deves criar uma class Viagem, com os atributos que precisas: linha, matmot,horini, horfim e depois, podendo manter o array para as viagens, seria:
Claro que se ainda estás a aprender e o objetivo é mesmo aprender arrays mulltidimensionais, a tua solução já está boa
C
Clowbr15
Do jeito que vc fez ficou massa … mais mesmo assim acho que não conseguirei trabalhar com isso … as viagens não tem ponto de comparação a não ser as posições do array … com isso não sei como seria pra comprar as classes ???
C
Clowbr15
Não entendi como vou varrer essa classe depois ?!??!
cada viagens[1]getlinha = UM REGISTRO ???
pmlm
viagens[0] é uma viagem
viagens[0].getLinha() da a linha dessa viagem
viagens[0].getHrini() a hora de inicio dessa viagem
C
Clowbr15
entendi … mesmo que pra mim venha 1000 viagens … ele sempre vai trabalhar a classe com a posição
depois é só eu chamar a classe e trabalhar varrendo o array …