Pessoal,
Estou tentando criar o metodo inserir para atender acesso ao BD usando java.
Já fiz o metodo procurar mas o inserir está dando erro no objeto da fk orgao_emissor_id da tabela certidao.
Poderias me ajudar pq nao estou conseguindo setar o Objeto Orgao Emissor.
Segue abaixo o repositorio e o main.
package br.com.certidoes.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import br.com.certidoes.classes.Certidao;
import br.com.orgaoemissor.jdbc.ConexaoJDBC;
public class RepositorioCertidoesBD implements RepositorioCertidoes{
private String nomeDriver;
private String urlConexao;
private String usuarioConexao;
private String senhaConexao;
private boolean indDriverCarregado;
private static final String MSG_FALHA_CARGA_DRIVER =
"Nome do driver JDBC usado não corresponde a uma classe válida";
private static final String MSG_ERRO_CONEXAO =
"Erro ao obter conexão com o banco de dados";
private static final String MSG_ERRO_ACESSO_BD =
"Erro de acesso ao banco de dados";
private static final String MSG_CERTIDAO_NAO_CADASTRADA =
"Certidao não cadastrada ";
private static final String MSG_ID_NAO_ENCONTRADO =
"ID não encontrado";
private static final String MSG_ID_INVALIDO =
"ID inválido";
private static final String INSERT_CERTIDAO =
"INSERT INTO certidao (id, nome, DiasEmissao, Orgao_Emissor_id) VALUES (?,?,?,?)";
// "INSERT INTO certidao (nome, DiasEmissao, Orgao_Emissor_id) VALUES (?,?,?,?)";
private static final String PROCURA_CERT=
"SELECT id, nome, DiasEmissao, Orgao_Emissor_id FROM certidao WHERE id = ?";
private static final String LISTA_CERT =
"SELECT id, nome, DiasEmissao, Orgao_Emissor_id FROM certidao";
private static final String DELETE_CERT =
"DELETE FROM certidao WHERE id = ?";
private static final String ATUALIZAR_CERT =
"UPDATE certidao SET nome = ? WHERE id = ?";
public RepositorioCertidoesBD(
String pNomeDriver,
String pUrlConexao,
String pUsuarioConexao,
String pSenhaConexao) {
super();
nomeDriver = pNomeDriver;
urlConexao = pUrlConexao;
usuarioConexao = pUsuarioConexao;
senhaConexao = pSenhaConexao;
indDriverCarregado = false;
}
private Connection getConexao() {
if (!indDriverCarregado) {
try {
Class.forName(nomeDriver);
indDriverCarregado = true;
} catch (ClassNotFoundException e) {
System.err.print(MSG_FALHA_CARGA_DRIVER);
}
}
try {
return DriverManager.getConnection(
urlConexao,
usuarioConexao,
senhaConexao);
} catch (SQLException e) {
System.err.print(MSG_ERRO_CONEXAO);
return null;
}
}
public void inserir (Certidao c) {
if (c != null) {
Connection con = getConexao();
PreparedStatement psCert = null;
PreparedStatement psEnd = null;
try {
psCert = con.prepareStatement(INSERT_CERTIDAO);
psCert.setInt(1, c.getId());
psCert.setString(2, c.getNome());
psCert.setString(3, c.getDiasEmissao());
psCert.setInt(4, c.getOrgao_Emissao.getIdOrgao_Emissao())
// Certidao certi = new Certidao();
//// psCert.setInt(4, c.getOrgao_Emissor());
// certi.setOrgao_Emissor_id(ConexaoJDBC.obterInstancia().procurar(certi.getOrgao_Emissor_id());
psCert.executeUpdate();
} catch (SQLException e) {
System.err.print(e.getMessage());
} finally {
fechaRecursos(con, psCert, null);
fechaRecursos(con, psEnd, null);
}
}
}
public void atualizar (Certidao c) {
if (c != null) {
Connection con = getConexao();
PreparedStatement psCert = null;
PreparedStatement psEnd = null;
try {
psCert = con.prepareStatement(ATUALIZAR_CERT);
psCert.setString(1, c.getNome());
psCert.setInt(2, c.getId());
// psCert.setString(3, c.getDiasEmissao());
// psCert.setInt(4, c.getOrgao_Emissor_id());
psCert.executeUpdate();
} catch (SQLException e) {
System.err.print(e.getMessage());
} finally {
fechaRecursos(con, psCert, null);
fechaRecursos(con, psEnd, null);
}
}
}
public Certidao procurar(int id) {
if (id != 0) {
Connection con = getConexao();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(PROCURA_CERT);
ps.setInt(1, id);
rs = ps.executeQuery();
if (rs.next()) {
Certidao certidao = new Certidao();
certidao.setDiasEmissao(rs.getString(3));
certidao.setId(rs.getInt(1));
certidao.setNome(rs.getString(2));
certidao.setOrgao_Emissor_id(ConexaoJDBC.obterInstancia().procurar(rs.getInt(4)));
return certidao;
} else {
System.err.print(MSG_CERTIDAO_NAO_CADASTRADA);
}
} catch (SQLException e) {
System.err.println(MSG_ERRO_ACESSO_BD);
System.err.println(e.getMessage());
} finally {
fechaRecursos(con, ps, rs);
}
}
return null;
}
private Certidao carregarCertidao(int int1) {
// TODO Auto-generated method stub
return null;
}
public ResultSet listar() {
Connection con = getConexao();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(LISTA_CERT);
rs = ps.executeQuery();
if (rs.next()){
return rs;
}
} catch (SQLException e) {
System.err.println(MSG_ERRO_ACESSO_BD);
System.err.println(e.getMessage());
}
return rs;
}
public void remover(int id) {
if (id != 0) {
Connection con = getConexao();
PreparedStatement ps = null;
try {
ps = con.prepareStatement(DELETE_CERT);
ps.setInt(1, id);
int rows = ps.executeUpdate();
if (rows <= 0) {
System.err.println("ID não encontrado");
}
} catch (SQLException e) {
System.err.println(MSG_ID_NAO_ENCONTRADO);
System.err.println(e.getMessage());
} finally {
fechaRecursos(con, ps, null);
}
} else {
System.err.println(MSG_ID_INVALIDO);
}
}
private void fechaRecursos(
Connection con,
PreparedStatement ps,
ResultSet rs) {
try {
if (rs != null)
rs.close();
} catch (Exception e) {
}
try {
if (ps != null)
ps.close();
} catch (Exception e) {
}
try {
if (con != null)
con.close();
} catch (Exception e) {
}
}
}
ackage br.com.certidoes.jdbc;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import br.com.certidoes.classes.Certidao;
public class TesteCertidoes {
// @SuppressWarnings("deprecation")
public static void main(String[] args) {
Certidao c = new Certidao();
c.setId();
c.setNome("URB");
c.setDiasEmissao("10");
c.getOrgao_Emissor_id();
//
//// c.setId(3);
// c.setNome("Compesa");
// c.setDiasEmissao("12");
// c.setOrgao_Emissor_id(5);
// ConexionJDBC.obterInstancia().atualizar(c);
// ConexionJDBC.obterInstancia().remover(2);
// Certidao certidao = ConexionJDBC.obterInstancia().procurar(100);
// System.out.println(certidao.toString());
ConexionJDBC.obterInstancia().inserir(c);
ResultSet rs = ConexionJDBC.obterInstancia().listar();
//
//
ResultSetMetaData mdata;
try {
mdata = rs.getMetaData();
int colCount = mdata.getColumnCount();
String[] colNames = new String[colCount];
for (int i = 1; i <= colCount; i++) {
colNames[i - 1] = mdata.getColumnName(i);
}
rs.beforeFirst();
while (rs.next()) {
String[] rowData = new String[colCount];
for (int i = 1; i <= colCount; i++) {
rowData[i - 1] = rs.getString(i);
System.out.println(rowData[i - 1]);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}