Se liga nesse select dentro do método findContatos():
Você está buscando dados somente na tabela contatos… os telefones estão em outra tabela, certo ? Seria isso:
Só que agora a porca torce o rabo… essa consulta vai retornar uma linha pra cada telefone que o cara tiver. Como você vai saber que o primeiro é celular e o outro é residencial ou vice-versa ?
não tem problema não, eu só usei o celualar como uma variavél, eu mudei aki, e coloquei telefone 1 e telefoene 2…hehe
eu não sabia fazer consulta com java, aprendí na facul os comandos só no banco de dados msm… vou testar aki, e te falo… valeu amigão
mesmo assim não deu certo… não tah imprimindo na tela os telefones… 
ah, mas peraí… te contei o começo da estória… Seu primeiro problema é que não estava buscando os telefones. Agora que está, tem que atribuí-los no seu objeto contato.
Logo depois desse select você tem isso:
while (rs.next()){
Contato contato = new Contato();
contato.setId(rs.getLong("id"));
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setData_nascimento(rs.getDate("data_nascimento"));
se você acrescentar:
esse é o caminho… veja bem: estou “supondo” um método setTelefone() na tua classe Contato. Altera aí para o que for exatamente…
é isso msm amigo mas ae dá o erro, Column “telefone” not found… desculpa ficar te pertubando, valeu msm
Sem problemas…
Agora veja… se analisar o código que já escreveu vai encontrar as coisas aí… Veja esse exemplo: quando você escreve
quer dizer que: já conectou com o banco, já executou uma consulta e está percorrendo o resultado dessa consulta. Que está dentro de teu objeto rs que é um ResultSet. o rs.getString(“nome”) está dizendo: “ei, rs (que eu sei que você é um ResultSet)… me dê aí o valor do campo nome que está na consulta que foi executada… e quero isso pra hoje !!” O rs vai te retornar o valor se ele achar um campo chamado “nome” na consulta.
Veja em sua consulta qual é o nome do campo que corresponde ao telefone.
Não se deixe atropelar por uma avalanche de conhecimento. Você está no caminho certo, mas precisa compreender o que está fazendo. E continue postando as dúvidas aí, ajuda não vai te faltar com certeza!!
vou testar aki amigo, mas eu tava achando q o erro era na consulta com o banco de dados, estou entendendo sim, vou continuar tentando aki e te falo, vc foi de grande ajuda…
mas aparece o erro nessa função…
[code]
public Contato finfByName(String nome) throws SQLException{
String select = " SELECT * FROM CONTATOS WHERE nome = ?";
Contato contato = null;
PreparedStatement stmt = getConnection().prepareStatement(select);
stmt.setString(1, nome);
ResultSet rs = stmt.executeQuery();
while (rs.next()){
contato = new Contato();
contato.setId(rs.getLong("id"));
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setData_nascimento(rs.getDate("data_nascimento"));
contato.gsetTelefone(rs.getString("telefone"));
}
rs.close();
stmt.close();
return contato;
}
[code]
} [/code]
não tenho certeza, mas acho q tah dando erro, pq a consulta só pesquisa na tabela contatos e não na tabela telefone, eu pensei em fazzer um inner join, mas não sei como… abrigado
Certo bacana. Se você está fazendo isso:
só vai dar certo se na tua tabela CONTATOS lá no banco existir o campo telefone. OU OU OU… se você fizer como mencionei na outra resposta, trocar sua consulta (a instrução SQL) por isso:
"SELECT c.id, c.nome, c.email, c.data_nascimento, t.telefone FROM CONTATOS c, TELEFONES t where t.id = c.id";
Esse formato em que está o select corresponde ao inner join que você pensa ser o que precisa (e é exatamente isso !!!)
ou então… como você mencionou que criou as variáveis telefone 1 e telefone 2… será que você quis dizer que criou os campos telefone 1 e telefone 2 na tabela contatos ? Se for isso, são esses campos que você tem que chamar com o rs.getString("…"). Mas chame os campos pelo nome exato que deu a eles na tabela, e não acho que tenha criado eles com espaço nos nomes
Cara, desculpe… eu sou muito ruim pra explicar
package Dao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import Agenda.Contato;
import Agenda.GenericDao;
public class ContatoDao extends GenericDao {
public void salvar(Contato contato) throws SQLException{
String insertContato = " INSERT INTO CONTATOS ( nome, email, data_nascimento) VALUES (?,?,?)";
String insertTelefones = "INSERT INTO TELEFONE (id, telefone) VALUES (?,?)";
int id = save(insertContato, contato.getNome(), contato.getEmail(), contato.getData_nascimento());
if (id > -1){
save(insertTelefones, id, contato.getTelefone());
save(insertTelefones, id, contato.getCelular());
}
}
public void alterar (Contato contato) throws SQLException{
String update = "UPDATE CONTATOS"+
"SET nome = ?, email = ? , data_nascimento = ?"+
"WHERE id = ?";
update(update, contato.getId(), contato.getNome(), contato.getEmail(), contato.getData_nascimento());
}
public void excluir (long id) throws SQLException{
String delete = "DELETE FROM CONTATOS WHERE id = ?";
delete(delete, id);
}
public List<Contato> findContatos() throws SQLException{
List<Contato> contatos = new ArrayList<Contato>();
String select = "SELECT c.id, c.nome, c.email, c.data_nascimento, t.telefone FROM CONTATOS c, TELEFONE t WHERE t.id = c.id";
PreparedStatement stmt = getConnection().prepareStatement(select);
ResultSet rs = stmt.executeQuery();
while (rs.next()){
Contato contato = new Contato();
contato.setId(rs.getLong("id"));
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setData_nascimento(rs.getDate("data_nascimento"));
contato.setTelefone(rs.getString("telefone"));
contatos.add(contato);
}
rs.close();
stmt.close();
return contatos;
}
public Contato finfByName(String nome) throws SQLException{
String select = "SELECT *FROM CONTATOS WHERE nome = ?";
Contato contato = null;
PreparedStatement stmt = getConnection().prepareStatement(select);
stmt.setString(1, nome);
ResultSet rs = stmt.executeQuery();
while (rs.next()){
contato = new Contato();
contato.setId(rs.getLong("id"));
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setData_nascimento(rs.getDate("data_nascimento"));
//contato.setTelefone(rs.getString("telefone"));
}
rs.close();
stmt.close();
return contato;
}
}
tah assim agora amigo, eu modifiquei as tabelas não, na tabela telefone tenho id, telefone, e na tabela contato, tenho id, nome, email e data de nascimento eu só mudei o nome na JLabel… obrigado
tah dano erro ao buscar por nome… valeu
Sim, porque você só alterou um dos métodos de pesquisa que é o que lista todos. Se lá na busca por nome você repetir o mesmo miolo vai ver que funciona
deu o erro Parameter index of range (1> number of parameters, which is 0).
tô quase desistindo, mts erros conserta um e aprece outro… 
Isso é porque está tentando aprender muita coisa de uma vez só… Não sei qual a pegada na tua faculdade, mas como muita gente por aqui, recomendo as apostilas da Caelum (gratuitas e muito bem montadas).
Voltando ao seu erro… no método de pesquisa por nome… por acaso, escreveste isto:
Essa é a string de consulta correta para esse método. Veja que é diferente da anterior por causa do “and c.nome = ?”. É essa cláusula que fará listar um contato ao invés de todos, como no método anterior.
isso msm amigão, resolvido o problema, vc me ajudou demais, valeu msm… abraços