olá galera, eu tenho duas tabelas, contatos e telefone, contatos com os seguintes atributos (nome, email, data de nascimento, id), e telefone com ( id, telefone),
porem não consigo atualizar os dados com o comando q criei, alguem pode me ajudar… agradeço a todos
o erro é o seguinte… NO VALUE SPECIFIED FOR PARAMETER 6…
ah telefone é multivalorado…
package Agenda;
import Agenda.Contato;
import Dao.ContatoDao;
import java.sql.Date;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.swing.*;
public class ContatoController {
private Date formatarData(String data) throws ParseException{
DateFormat formatter = new SimpleDateFormat ("dd/MM/yyyy");
return new Date(formatter.parse(data).getTime());
}
public void salvar(String nome, String email, String dtNascimento, String telefone, String celular) throws SQLException,
ParseException{
Contato contato = new Contato();
contato.setNome(nome);
contato.setEmail(email);
contato.setData_nascimento(formatarData(dtNascimento));
contato.setTelefone(telefone);
contato.setCelular(celular);
new ContatoDao().salvar(contato);
}
public void alterar( long id, String nome, String email, String dtNascimento, String telefone, String celular) throws SQLException,
ParseException{
Contato contato = new Contato();
contato.setId(id);
contato.setNome(nome);
contato.setEmail(email);
contato.setData_nascimento(formatarData(dtNascimento));
contato.setTelefone(telefone);
contato.setCelular(celular);
new ContatoDao().alterar(contato);
}
public List<Contato>listaContatos(){
ContatoDao dao = new ContatoDao();
try{
return dao.findContatos();
}catch(SQLException e){
JOptionPane.showMessageDialog(null, "Não foi possivel localizar esse contato\n" +
e.getLocalizedMessage());
}
return null;
}
public void excluir (long id) throws SQLException{
new ContatoDao().excluir(id);
}
public Contato buscaContatoPorNome(String nome) throws SQLException{
ContatoDao dao = new ContatoDao();
return dao.finfByName(nome);
}
}
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" +
"c.id=?, c.nome = ?, c.email =?, c.data_nascimento =?, t.telefone =? FROM CONTATOS c," +
" TELEFONE t WHERE t.id = c.id and id =?";
update(update, contato.getId(), contato.getNome(), contato.getEmail(), contato.getData_nascimento(),
contato.getTelefone());
}
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 c.id, c.nome, c.email, c.data_nascimento, t.telefone FROM CONTATOS c," +
" TELEFONE t WHERE t.id = c.id and c.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;
}
}