Gente to com um problema
Tenho uma aplicação desktop e quando faço o select ele faz certinho.
Meu problema é que na tela ele aparece o ultimo registro.
Gostaria que ele sempre carregasse o primeiro registro, e que tivesse um botão onde eu possa ir navegando pelo botão (proximo/anterior)
Já tentei usar (rs.first(),rs.last() ) só que não vai o sistema trava.
To usando o rs.next este funciona.
Alguém pode me ajudar???
[code] public void Busca (String loj){
try {
String sql = “SELECT a.id,a.loja,a.nome,a.problema,a.atendido,a.data,a.status,a.solucao FROM atendimento a where loja = '”+loj+"’ order by id";
st = connection.createStatement(rs.TYPE_SCROLL_SENSITIVE,rs.CONCUR_READ_ONLY);
rs = st.executeQuery(sql);
List<CadastroDAO> cadastro = new ArrayList<CadastroDAO>();
while (rs.next()) {
id = rs.getInt("id");
loja = rs.getString("loja");
problem = rs.getString("problema");
data = rs.getString("data");
atendido = rs.getString("atendido");
nome = rs.getString("nome");
status = rs.getString("status");
solucao = rs.getString("solucao");
}
} catch(SQLException errSQL) {
System.out.println(errSQL.getMessage());
errSQL.printStackTrace();
}
catch(Exception errGeral) {
System.out.println(errGeral.getMessage());
errGeral.printStackTrace();
}
}
[/code]
[code] private void btnPesquisarActionPerformed(java.awt.event.ActionEvent evt) {
CadastroDAO cdao = new CadastroDAO();
cdao.setLoja(txtLoja.getSelectedItem().toString());
BancoDados bd = new BancoDados();
bd.AbreConexao();
bd.Busca(cdao.getLoja());
Primeiro de tudo, use PreparedStatement ao invés de Statement quando tiver passagem de parâmetros.
Segundo, se a sua consulta retornar mais de um registro, você tem que recuperar o registro e adicionar em uma Coleção.
Da forma com que você está fazendo, você está sobrescrevendo os valores, só ficando os últimos valroes populados no campos.
Primeiro de tudo, use PreparedStatement ao invés de Statement quando tiver passagem de parâmetros.
Segundo, se a sua consulta retornar mais de um registro, você tem que recuperar o registro e adicionar em uma Coleção.
Da forma com que você está fazendo, você está sobrescrevendo os valores, só ficando os últimos valroes populados no campos.
Valeu[/quote]
Legal
Eu pensei em usar array mais achei muito complicado fazer isso!
poderia me dar um exemplo!!!
while (rs.next()) {
id = rs.getInt("id");
loja = rs.getString("loja");
problem = rs.getString("problema");
data = rs.getString("data");
atendido = rs.getString("atendido");
nome = rs.getString("nome");
status = rs.getString("status");
solucao = rs.getString("solucao");
}
Em vez de vc fazer isso faça:
while (rs.next()) {
CadastroDAO tmp = new CadastroDAO();
tmp.setId(bd.id);
tmp.setProblema(bd.problem);
tmp.setData(bd.data);
tmp.setNome(bd.nome);
tmp.setAtendido(bd.atendido);
tmp.setStatus(bd.status);
tmp.setSolucao(bd.solucao);
cadastro.add(tmp);
}
return cadastro;
[code] public List Busca (String loj){
List cadastro = new ArrayList();
try {
String sql = “SELECT a.id,a.loja,a.nome,a.problema,a.atendido,a.data,a.status,a.solucao FROM atendimento a where loja = '”+loj+"’ order by id";
st = connection.createStatement(rs.TYPE_SCROLL_SENSITIVE,rs.CONCUR_READ_ONLY);
rs = st.executeQuery(sql);
Olha eu ja vi esta forma de usar os select, e tambem ja usei, fazer primeiro a consulta e carregar num vector ( coleção) mas o problema esta no seguinte se tivermos uma consulta com 2 milhoes de dados, a memoria seria pouca, eu acho que uma forma mais inteligente que pelos vistos poucos usam , seria mesmo tentar ir buscar um a um na base de dados e mostrar, sem carregar na memoria da JVM, porque a linguaguem de programação( java) não serve para guardar dados isto é tarefa da base de dados, e fazendo desta forma ficara guardado por ai 2 milhoes de dados que a tabela tiver na memoria, e a actualização dos dados noutro cliente, não iria afectar os dados que ja estão carregados no vector( memoria da JVM).
[quote=sulito]Olha eu ja vi esta forma de usar os select, e tambem ja usei, fazer primeiro a consulta e carregar num vector ( coleção) mas o problema esta no seguinte se tivermos uma consulta com 2 milhoes de dados, a memoria seria pouca, eu acho que uma forma mais inteligente que pelos vistos poucos usam , seria mesmo tentar ir buscar um a um na base de dados e mostrar, sem carregar na memoria da JVM, porque a linguaguem de programação( java) não serve para guardar dados isto é tarefa da base de dados, e fazendo desta forma ficara guardado por ai 2 milhoes de dados que a tabela tiver na memoria, e a actualização dos dados noutro cliente, não iria afectar os dados que ja estão carregados no vector( memoria da JVM).
[/quote]
amigo não vo usar nem metade do banco
eu uso mysql e se tivesse tantos dados poderia usar um oracle ou sql server
é uma aplicação pra 2 pessoas…