Boa tarde
Desde ja peço desculpa pelo transtorno mas estou tentando gravar um JComBox box no banco e nao venho conseguindo gostaria de qualquer ajuda para que eu possa resolver este probleminha.
Abaixo seguem na ordem: a linhas do meu metodo PegaObjetoDosCampos() onde jcbTpCliente eh do tipo JComboBox:
per = new PersistenciaTpClienteJDBC();
TpCliente tipo = new TpCliente();
tipo.setCodigo(per.getKey(jcbTpCliente.getSelectedItem().toString()));
c.setTpCliente(tipo);
metodo getKey da classe Persistencia:
public Integer getKey(String nome){
String sql = “Select * from tpcliente where nome = '” + nome + “’”;
try {
PreparedStatement stm = conexao.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
if(rs.first()){
Integer id = rs.getInt(“codigo”);
return id;
}
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
e o método pra gravar no banco:
public void grava(Object obj) {
try {
Cliente c = (Cliente) obj;
PreparedStatement stmt;
String sql =“insert into cliente” +
“(nome=?, telefone=?, email=?, codtpcliente=?, numcasa=?, codrua=?, codbairro=?)”;
stmt = conexao.prepareStatement(sql);
stmt.setString (1, c.getNome());
stmt.setString (2, c.getTelefone());
stmt.setString (3, c.getEmail());
//System.out.println(c.getTpCliente().getCodigo());
stmt.setInt (4, c.getTpCliente().getCodigo());
stmt.setInt (5, c.getNumCasa());
stmt.setInt (6, c.getRua().getCodigo());
stmt.setInt (7, c.getBairro().getCodigo());
stmt.execute();
} catch (Exception e) {
e.printStackTrace();
}
}
Boa tarde shunHades,
A sua instrução de insert não seria assim?
String sql ="insert into cliente(nome, telefone, email, codtpcliente, numcasa, codrua, codbairro) values(?, ?, ?, ?, ?, ?, ?)";
Espero ter ajudado,
Té mais.
oi Celsomarcos estava sim errado o sql
consegui corrigir o erro com sua ajuda e uma boa revisao em um outro errinho^^
o q acontece agora eh q nao estou conseguindo buscar o JComboBox
ai está meu metodo busca:
public Object busca(String nome) throws DadoRequeridoNaoExisteException {
PreparedStatement stmt;
ResultSet rs;
try {
stmt = conexao.prepareStatement
("select * from cliente where nome=?");
stmt.setString(1, nome);
rs = stmt.executeQuery();
if (rs.first())
{
// a busca teve sucesso, o nome existe na tabela
Cliente c = new Cliente();
c.setCodigo (rs.getInt("Codigo"));
c.setNome (rs.getString("nome"));
c.setTelefone (rs.getString("telefone"));
c.setEmail (rs.getString("email"));
c.setNumCasa (rs.getInt("numcasa"));
c.setTpCliente ((TpCliente) rs.getObject("codtpcliente"));
c.setBairro ((Bairro)rs.getObject("codbairro"));
c.setRua ((Rua)rs.getObject("codrua"));
return c;
}
else
throw new DadoRequeridoNaoExisteException("O cliente " + nome + " não está cadastrado");
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
o erro da nos comboBox:
c.setTpCliente ((TpCliente) rs.getObject(“codtpcliente”));
c.setBairro ((Bairro)rs.getObject(“codbairro”));
c.setRua ((Rua)rs.getObject(“codrua”));
E aí!!
Eu faria da seguinte forma:
stmt = conexao.prepareStatement
("select * from cliente where nome= '" + nome + "'");
//stmt.setString(1, nome); esta linha eu tiro
rs = stmt.executeQuery();
Espero ter ajudado.
Té mais.