Bom dia galera, criei uma JTable e criei um método pra preencher-la, mas minha dúvida é o por o campo Idusuario esta vindo com o valor zero, sendo que no meu banco de dados ele nao está com o valor zero... esta com outro valor, por que eles está vindo com o valor zero??
Oi, conforme já te expliquei no outro tópico não use o DefaultTableModel. Ele é mais difícil, mais inseguro, e ocupa no mínimo o dobro do espaço em memória.
Você pode colocar aqui o código que você fez para montar a List<Contato>? Também seria útil você postar a sua classe Contato.
A
Anderson_S
Existe alguma solução para essa minha dúvida utilizando esse código ai???
A
Anderson_S
ViniGodoy:
Oi, conforme já te expliquei no outro tópico não use o DefaultTableModel. Ele é mais difícil, mais inseguro, e ocupa no mínimo o dobro do espaço em memória.
Você pode colocar aqui o código que você fez para montar a List<Contato>? Também seria útil você postar a sua classe Contato.
Certo vo postar as classes, mas essa
List<Contato>
é apenas a criação de uma variável do tipo lista de contatos, mais nada!!!
CLASSE CONTATO.:
packageNegocio;publicclassContato{privateintidusuario;privateStringnome;privateStringidade;privateStringtelefone;//Contrutor utilizado para Update e deletepublicContato(intidusuario){this.idusuario=idusuario;}// Contrutor padrãopublicContato(Stringnome,Stringidade,Stringtelefone){this.nome=nome;this.idade=idade;this.telefone=telefone;}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetIdade(){returnidade;}publicvoidsetIdade(Stringidade){this.idade=idade;}publicStringgetTelefone(){returntelefone;}publicvoidsetTelefone(Stringtelefone){this.telefone=telefone;}publicintgetIdusuario(){returnidusuario;}publicvoidsetIdusuario(intidusuario){this.idusuario=idusuario;}}
Não, se o seu problema é o idUsuario ser sempre 0, provavelmente é um problema na carga do contato no banco. Por isso não adianta nada postar a dúvida sem mostrar como você a realiza.
Agora, acho engraçado que você tem a preocupação de criar um DAO, mas insiste em querer usar o DefaultTableModel… pq tentar melhorar o código num lugar, e deixar gambi em outro?
A
Anderson_S
Pois é, vo postar contataDAO de listar aqui, ai vc olha...
packageBanco;importjava.sql.*;importjava.util.ArrayList;importjava.util.List;importNegocio.Contato;publicclasscontatoDAO{publicvoidinserir(Contatocontato)throwsSQLException{// Abrir uma conexaoConnectionconn=Conexao.getConexao();// Variável utilizada para armazenar os comandos SQLStringsql="insert into usuario(nome,idade,telefone)"+"values(?,?,?)";//Cria o Statement para executar o código SQLPreparedStatementstmt=conn.prepareStatement(sql);// Setar os valores no statemantstmt.setString(1,contato.getNome());stmt.setString(2,contato.getIdade());stmt.setString(3,contato.getTelefone());// Executa o código SQL com os valores setadosstmt.execute();stmt.close();}publicList<Contato>listar()throwsSQLException{Connectionconn=Conexao.getConexao();Stringsql="Select * from usuario";PreparedStatementstmt=conn.prepareStatement(sql);// Esse método é utilizado para apontar para os dados do BDResultSetrs=stmt.executeQuery();//Cria uma lsita para armazenar os valores que serão buscadosList<Contato>minhaLista=newArrayList<Contato>();while(rs.next()){// Essa Rotína pega os dados do banco e armazena nesse objeto do tipo contatoContatocontato=newContato(rs.getString("nome"),rs.getString("idade"),rs.getString("telefone"));//Essa rotína adiciona os dados de contato no objeto minhaListaminhaLista.add(contato);}rs.close();stmt.close();returnminhaLista;}publicvoidaltera(Contatocontato)throwsSQLException{Connectionconn=Conexao.getConexao();Stringsql=" Update usuario set nome = ? ,idade = ? ,telefone = ? where idusuario = ? ";PreparedStatementstmt=conn.prepareStatement(sql);// Setar os valores no statemantstmt.setString(1,contato.getNome());stmt.setString(2,contato.getIdade());stmt.setString(3,contato.getTelefone());stmt.setInt(4,contato.getIdusuario());// Executa o código SQL com os valores setadosstmt.execute();stmt.close();}publicvoiddeletar(Contatocontato)throwsSQLException{Connectionconn=Conexao.getConexao();Stringsql="Delete From usuario where idusuario=?";PreparedStatementstmt=conn.prepareStatement(sql);stmt.setInt(1,contato.getIdusuario());stmt.execute();stmt.close();}publicList<Contato>buscar(intidusuario)throwsSQLException{Connectionconn=Conexao.getConexao();// Nesta Rotína, nescessita de utilizar o contrutor// para inicializa-lo com o parametro de deseja consultarContatocontato=newContato(idusuario);Stringsql="Select * from usuario where idusuario=?";PreparedStatementstmt=conn.prepareStatement(sql);stmt.setInt(1,contato.getIdusuario());ResultSetrs=stmt.executeQuery();List<Contato>listar=newArrayList<Contato>();while(rs.next()){Contatocont=newContato(rs.getString("nome"),rs.getString("idade"),rs.getString("telefone"));listar.add(cont);}rs.close();stmt.close();returnlistar;}}
ViniGodoy
Cara, olha ali o seu método listar.
Ali você não está setando o id do usuário na classe contato.
mano, nao sei se vc viu, ams eu tenho dois metodos construtores, 1 só contem como parametro o idusuario
e o outro contem todos os outros… e ai como faço??
ViniGodoy
Anderson S.:
mano, nao sei se vc viu, ams eu tenho dois metodos construtores, 1 só contem como parametro o idusuario
e o outro contem todos os outros… e ai como faço??
Usa o construtor com idUsuario e os métodos set para definir os outros parâmetros, igual ao postei no while do meu post anterior.
A
Anderson_S
entendi,qualquer coisa comunico aqui no forum, vo testar aqui,vlw pela ajuda mano