seguinte tenho minha consulta
public List<Itens_Venda> listar_Itens_Venda(Integer id_venda) {
String sql = "SELECT * FROM itens_venda itv INNER JOIN produto p ON itv.id_produto = p.id_produto and itv.id_venda= ? ";
try {
PreparedStatement stmt = getConexao().prepareStatement(sql);
stmt.setInt(1, id_venda );
ResultSet rs = stmt.executeQuery();
rs.next();
return getItens_Venda(rs);
} catch (SQLException sQLException) {
System.out.println("Erro ao listar Itens Venda" + sQLException);
}
return null;
}
private List<Itens_Venda> getItens_Venda(ResultSet rs) throws SQLException {
if(rs == null)
return null;
List<Itens_Venda> lista = new ArrayList<Itens_Venda>();
while(rs.next()) {
Itens_Venda iven = new Itens_Venda();
iven.setid_venda(rs.getInt("id_venda"));
iven.setid_produto(rs.getInt("id_produto"));
// iven.setid_produto(rs.getInt("id_cliente"));
iven.setquant_vendida(rs.getInt("quant_vendida"));
iven.setvalor_pagar(rs.getDouble("valor_pagar"));
lista.add(iven);
}
return lista;
}
depois pego o resultado e coloco numa lista
por fim coloco em um JTABLE
private void preenche_Tabela_Itens_Venda() {
DefaultTableModel modelo = new javax.swing.table.DefaultTableModel(
new Object [][] {},
new String [] {"Cod venda", "Cod Produto" , "Nome Produto", "Quant Vendida", "Valor A Pagar"}
);
Itens_VendaDao ITVendaD = new Itens_VendaDao() ;
tabela.setModel(modelo);
ProdutoDao pro = new ProdutoDao();
List<Itens_Venda> lista = ITVendaD.listar_Itens_Venda(ven.getid_venda() ); //aqui eu pego o ID da venda e passo pra funcao
for(Itens_Venda itven:lista) {
modelo.addRow(new String[] {
itven.getid_venda().toString(), itven.getid_produto().toString(), pro.listar_Nome_Produto_ID_VENDA(itven.getid_produto()).toString(), itven.getquant_vendida().toString(), itven.getvalor_pagar().toString() });
}
}
so ai o problema ele nao pega o primeiro registro
cadastra certo eu abro tanto o postgre como o mysql estao la cadastrado so que so mostra no JTABLE apartir do segundo cadastro, o cadastro 3 cadastro 4 assim por diante funciona so no primeiro cadastro que nao funciona alguem sabe que pode estar acontecendo??????
Ajuda com consulta
3 Respostas
seguinte tenho minha consulta public List<Itens_Venda> listar_Itens_Venda(Integer id_venda) { String sql = "SELECT * FROM itens_venda itv INNER JOIN produto p ON itv.id_produto = p.id_produto and itv.id_venda= ? "; try { PreparedStatement stmt = getConexao().prepareStatement(sql); stmt.setInt(1, id_venda ); ResultSet rs = stmt.executeQuery(); rs.next(); return getItens_Venda(rs); } catch (SQLException sQLException) { System.out.println("Erro ao listar Itens Venda" + sQLException); } return null; } private List<Itens_Venda> getItens_Venda(ResultSet rs) throws SQLException { if(rs == null) return null; List<Itens_Venda> lista = new ArrayList<Itens_Venda>(); while(rs.next()) { Itens_Venda iven = new Itens_Venda(); iven.setid_venda(rs.getInt("id_venda")); iven.setid_produto(rs.getInt("id_produto")); // iven.setid_produto(rs.getInt("id_cliente")); iven.setquant_vendida(rs.getInt("quant_vendida")); iven.setvalor_pagar(rs.getDouble("valor_pagar")); lista.add(iven); } return lista; } depois pego o resultado e coloco numa lista por fim coloco em um JTABLE private void preenche_Tabela_Itens_Venda() { DefaultTableModel modelo = new javax.swing.table.DefaultTableModel( new Object [][] {}, new String [] {"Cod venda", "Cod Produto" , "Nome Produto", "Quant Vendida", "Valor A Pagar"} ); Itens_VendaDao ITVendaD = new Itens_VendaDao() ; tabela.setModel(modelo); ProdutoDao pro = new ProdutoDao(); List<Itens_Venda> lista = ITVendaD.listar_Itens_Venda(ven.getid_venda() ); //aqui eu pego o ID da venda e passo pra funcao for(Itens_Venda itven:lista) { modelo.addRow(new String[] { itven.getid_venda().toString(), itven.getid_produto().toString(), pro.listar_Nome_Produto_ID_VENDA(itven.getid_produto()).toString(), itven.getquant_vendida().toString(), itven.getvalor_pagar().toString() }); } } so ai o problema ele nao pega o primeiro registro cadastra certo eu abro tanto o postgre como o mysql estao la cadastrado so que so mostra no JTABLE apartir do segundo cadastro, o cadastro 3 cadastro 4 assim por diante funciona so no primeiro cadastro que nao funciona alguem sabe que pode estar acontecendo??????
Veja que vc antes de chamar o método getItens_Venda....
você já executou um next, e lá você estava no primeiro registro....
seguinte tenho minha consulta public List<Itens_Venda> listar_Itens_Venda(Integer id_venda) { String sql = "SELECT * FROM itens_venda itv INNER JOIN produto p ON itv.id_produto = p.id_produto and itv.id_venda= ? "; try { PreparedStatement stmt = getConexao().prepareStatement(sql); stmt.setInt(1, id_venda ); ResultSet rs = stmt.executeQuery(); rs.next();// Voce já havia avançado 1 ponteiro no resultset aqui sendo que daqui pra baixo vai pegar a partir do 2º. Retire isto e teste return getItens_Venda(rs); } catch (SQLException sQLException) { System.out.println("Erro ao listar Itens Venda" + sQLException); } return null; } private List<Itens_Venda> getItens_Venda(ResultSet rs) throws SQLException { if(rs == null) return null; List<Itens_Venda> lista = new ArrayList<Itens_Venda>(); while(rs.next()) { Itens_Venda iven = new Itens_Venda(); iven.setid_venda(rs.getInt("id_venda")); iven.setid_produto(rs.getInt("id_produto")); // iven.setid_produto(rs.getInt("id_cliente")); iven.setquant_vendida(rs.getInt("quant_vendida")); iven.setvalor_pagar(rs.getDouble("valor_pagar")); lista.add(iven); } return lista; } depois pego o resultado e coloco numa lista por fim coloco em um JTABLE private void preenche_Tabela_Itens_Venda() { DefaultTableModel modelo = new javax.swing.table.DefaultTableModel( new Object [][] {}, new String [] {"Cod venda", "Cod Produto" , "Nome Produto", "Quant Vendida", "Valor A Pagar"} ); Itens_VendaDao ITVendaD = new Itens_VendaDao() ; tabela.setModel(modelo); ProdutoDao pro = new ProdutoDao(); List<Itens_Venda> lista = ITVendaD.listar_Itens_Venda(ven.getid_venda() ); //aqui eu pego o ID da venda e passo pra funcao for(Itens_Venda itven:lista) { modelo.addRow(new String[] { itven.getid_venda().toString(), itven.getid_produto().toString(), pro.listar_Nome_Produto_ID_VENDA(itven.getid_produto()).toString(), itven.getquant_vendida().toString(), itven.getvalor_pagar().toString() }); } } so ai o problema ele nao pega o primeiro registro cadastra certo eu abro tanto o postgre como o mysql estao la cadastrado so que so mostra no JTABLE apartir do segundo cadastro, o cadastro 3 cadastro 4 assim por diante funciona so no primeiro cadastro que nao funciona alguem sabe que pode estar acontecendo??????
Como citado pelo amigo acima, tem um avanço no ponteiro sobrando retire o mesmo e teste. Se vc tivesse recriado o resultSet seria outra história... Comentei ele para vc achar fácil.
Qualquer coisa é só dar um grito!!! :shock: :shock: :shock: :shock: :shock:
Um grande Abraço!!!
legal funcionou beleza valeu ai a todos pela ajuda valeu!!!
Criado 20 de dezembro de 2008
Ultima resposta 21 de dez. de 2008
Respostas 3
Participantes 3
Alura Git Flow: entenda o que é, como e quando utilizar Entenda o que é Git Flow, como funciona seu fluxo com branches como Master, Develop, Feature, Release e Hotfix, além de vantagens e desvantagens.
Casa do Codigo Ontologias e Web Semantica: Do conceito a aplicacao Por Ivam Galvao Filho — Casa do Codigo