E ai galerinha… to com uma probleminha aqui é o seguinte.: Sempre que cadastro um novo contato ele aparece na JTable em tempo de execução perfeitamente, todos os dados aparecem perfeitamente, mas o ID referente a esse novo contato sempre vem com o valor “0”, ai quando fecho e abro a aplicação o ID referente ao novo contato aparece…será por que que ele só aparece qundo fecho e abro novamente a aplicação??? Por que ele nao aparece com o valor correto como os outros dados???
Vo postar os códigos referentes a parte de cadastro!!! Obrigado!!!
INSERIR DO DAO
// Abrir uma conexao
Connection conn = Conexao.getConexao();
// Variável utilizada para armazenar os comandos SQL
String sql = "insert into usuario(nome,idade,telefone)" + "values(?,?,?)";
//Cria o Statement para executar o código SQL
PreparedStatement stmt = conn.prepareStatement(sql);
// Setar os valores no statemant
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getIdade());
stmt.setString(3, contato.getTelefone());
// Executa o código SQL com os valores setados
stmt.execute();
stmt.close();
}[/code]
Simples, após inserir o contato, voce tem que pesquisar com um “Select” qual foi o contato que foi inserido, portando logo após executar um insert, chame uma pesquisa informando o nome do contato inserido.
public void cadastrarContato(String nome , String idade , String telefone) throws SQLException{
Contato cont = new Contato(nome,idade,telefone);
contatoDAO cDAO = new contatoDAO();
cDAO.inserir(cont);
cDAO.pesquisar(cont); // Aqui voce faz a pesquisa logo após o inserir.
}
Isto é, presumindo que o seu contatoDAO tenha um método pesquisar, passando como parâmetros o Contato.
Opa, blz cara…olha só…eu fiz um pouco diferente, mas utilizando sua lógica. criei um outro método dentro do DAo que pesquisava pelo nome inserido, e chamei dentro do metodo inserir do DAO, mas continua vindo com valor igual a zero…vo postar pra voc~e olhar os dois métodos!! Obrigado!!!
// Abrir uma conexao
Connection conn = Conexao.getConexao();
// Variável utilizada para armazenar os comandos SQL
String sql = "insert into usuario(nome,idade,telefone)" + "values(?,?,?)";
//Cria o Statement para executar o código SQL
PreparedStatement stmt = conn.prepareStatement(sql);
// Setar os valores no statemant
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getIdade());
stmt.setString(3, contato.getTelefone());
// Executa o código SQL com os valores setados
stmt.execute();
String nome = contato.getNome();
int x = pesquisarID(nome); // CHAMADA DO MÉTODO
contato.setIdusuario(x);
stmt.close();
}
// ESSE MÉTODO IRÁ SER CHAMADO DENTRO DO MÉTODO INSERIR
private int pesquisarID(String nome) throws SQLException{
Connection conn = Conexao.getConexao();
int x = 0;
Contato contato = new Contato(nome);
String sql = "Select idusuario from usuario where nome=?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1,contato.getNome());
ResultSet rs = stmt.executeQuery();
if(rs.next() == true){
contato.setIdusuario(rs.getInt("idusuario"));
x = contato.getIdusuario();
}
return x;
}
[/code]
Mesmo assim quando Cadastro, o Id continua vindo com o valor Zero :oops:
public void inserir(Contato contato) throws SQLException{
// Abrir uma conexao
Connection conn = Conexao.getConexao();
// Variável utilizada para armazenar os comandos SQL
String sql = "insert into usuario(nome,idade,telefone)" + "values(?,?,?)";
//Cria o Statement para executar o código SQL
PreparedStatement stmt = conn.prepareStatement(sql);
// Setar os valores no statemant
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getIdade());
stmt.setString(3, contato.getTelefone());
// Executa o código SQL com os valores setados
stmt.execute();
String nome = contato.getNome();
int x = pesquisarID(nome); // CHAMADA DO MÉTODO
contato.setIdusuario(x);
stmt.close();
}
// ESSE MÉTODO IRÁ SER CHAMADO DENTRO DO MÉTODO INSERIR
private int pesquisarID(String nome) throws SQLException{
Connection conn = Conexao.getConexao();
String sql = "Select idusuario from usuario where nome=?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1,nome);
ResultSet rs = stmt.executeQuery();
if(rs.next() == true)
return rs.getInt("idusuario");
else
return -1;
}
Verifique agora se ele retorna -1 ou 0.
Se for -1 voce deve usar um where melhor para retornar o valor certo.
Tente também colocar essa query no prompt do seu banco para ver se funciona.
Ai Mark_Ameba, testei seu exemplo na aplicação e o idusuario continua vindo para a JTable com o valor Zero “0”… o exemplo da lina tbm nao deu certo!!!
será que não é na TableModel não???
eu chamei o método pesquisar numa classe teste que apresentava valores em linha de texto, e retorno o idusuario certinha quando existia o nome dele no Banco, mas na JTable continua vindo com o valor zero