public boolean enviarArray(int novapf, ArrayList<Parentesco> arr) {
try {
for (int x = 0; x < arr.size(); x++) {
Parentesco parentesco = (Parentesco) arr.get(x);
Connection c = ConnectionHelper.getConnection();
String sqlinsert = "insert into parentesco "
+ "(pf_cd_pessoafisica, cd_sequencial, nm_parente, cd_relacionamento, sn_coabita) "
+ "values (?, (select nvl(max(cd_sequencial), 0)+1 from parentesco where pf_cd_pessoafisica = ?), ?, ?, ?)";
PreparedStatement pstmt = c.prepareStatement(sqlinsert);
pstmt.setInt(1, novapf);
pstmt.setInt(2, novapf);
pstmt.setString(3, parentesco.getnm_parente());
pstmt.setString(4, parentesco.getcodigo());
pstmt.setString(5, parentesco.getcodigoc());
pstmt.executeUpdate();
pstmt.close();
ConnectionHelper.close(c);
// System.out.println(novapf);
}
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
[code]
essa foi a forma que fiz o insert, criei um método para apagar os dados da tabela e depois chamo o insert novamente, mas nao ficou funcional, alguém teria uma ideia?
Segue um exemplo dos meus updates...
[code]
public static boolean updateend(int novapf, CadastroEndereco cdtend) {
try {
Connection c = ConnectionHelper.getConnection();
String sql_update = "update enderecos set " + "tp_endereco = ?, "
+ "ds_logradouro = ?, " + "nu_logradouro = ?, "
+ "ds_complemento = ?, " + "ds_bairro = ?, "
+ "cd_cep = ?, " + "municipio_cd_municipio = ? "
+ "where pf_cd_pessoafisica = " + novapf;
PreparedStatement pstmt = c.prepareStatement(sql_update);
pstmt.setString(1, cdtend.gettp_endereco());
pstmt.setString(2, cdtend.getds_logradouro());
pstmt.setString(3, cdtend.getnu_logradouro());
pstmt.setString(4, cdtend.getds_complemento());
pstmt.setString(5, cdtend.getds_bairro());
pstmt.setString(6, cdtend.getcd_cep());
pstmt.setInt(7, cdtend.getmunicipio_cd_municipio());
pstmt.executeUpdate();
pstmt.close();
ConnectionHelper.close(c);
// System.out.println(cd_pessoafisica);
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
Update Array
R
seguinte galera, a pouco tempo fiz um insert atraves de um array, agora preciso fazer um update dele
3 Respostas
Oi, rosequadra.
Eu faria da seguinte forma:
public class ConnectionFactory {
private static ConnetionFactory connectionFactory = new ConnectionFactory();
private Connection connection;
private ConnectionFactory() {}
public static ConnectionFactory getInstance() { return connectionFactory; }
public Connection getConnection() throws SQLException {
if (connection == null) {
Class.forName("seu driver");
connection = DriverManager.getConnection("url", "user", "pass");
}
return connection;
}
public void commit() throws SQLException {
connection.commit();
connection = null;
}
public void rolback() throws SQLException {
connection.rolback();
connection = null;
}
}
public Long recuperarSequencial(String nomeSequencia, Parentesco parentesco) throws SQLException {
Connection connectionSelect = ConnectionFactory.getInstance().getConnection();
String sentencaSelect = "";
sentencaSelect += "SELECT NVL(MAX(CD_SEQUENCIAL), 0) + 1 SEQUENCIAL FROM ";
sentencaSelect += "PARENTESCO WHERE PF_CD_PESSOAFISICA = ?";
PreparedStatement statementSelect = connectionSelect.prepareStatement(sentencaSelect);
statementSelect.setLong(1, parentesco.getPf_Cd_PessoaFisica());
ResultSet resultSelect = statementSelect.executeQuery();
Long numeroSequencial;
while (resultSelect.next()) {
numeroSequencial = resultSelect.getLong("SEQUENCIAL");
}
return numeroSequencial;
}
public void adicionarParentesco(Parentesco parentesco) throws SQLException {
Connection connectionInsert = ConnectionFactory.getInstance().getConnection();
String sentencaInsert = "";
sentencaInsert += "INSERTO INTO PARENTESCO (PF_CD_PESSOAFISICA, CD_SEQUENCIAL, ";
sentencaInsert += "NM_PARENTE, CD_RELACIONAMENTO, SN_COABITA) VALUES (?, ?, ?, ?, ?, ?)";
PreparedStatement statementInsert = connectionInsert.prepareStatement(sentencaInsert);
statementInsert.setInt(1, novapf);
statementInsert.setInt(2, novapf);
statementInsert.setString(3, parentesco.getnm_parente());
statementInsert.setString(4, parentesco.getcodigo());
statementInsert.setString(5, parentesco.getcodigoc());
statementInsert.execute();
statementInsert.close();
}
public void atualizarParentesco(Parentesco parentesco) throws SQLException {
Connection connectionUpdate = ConnectionFactory.getInstance().getConnection();
String sentencaUpdate = "";
sentencaUpdate += "UPDATE PARENTESCO SET PF_CD_PESSOAFISICA = ?, CD_SEQUENCIAL = ?, ";
sentencaUpdate += "NM_PARENTE = ?, CD_RELACIONAMENTO = ?, SN_COABITA = ? WHERE ID = ?;
PreparedStatement statementUpdate = connectionUpdate.prepareStatement(sentencaUpdate);
statementUpdate.setInt(1, novapf);
statementUpdate.setInt(2, novapf);
statementUpdate.setString(3, parentesco.getnm_parente());
statementUpdate.setString(4, parentesco.getcodigo());
statementUpdate.setString(5, parentesco.getcodigoc());
statementUpdate.executeUpdate();
statementUpdate.close();
}
// PARA INSERÇÃO...
public void adicionarParentescos(List<Parentesco> parentescos) throws SQLException {
for (Parentesco parentesco : parentescos) {
adicionarParentesco(parentesco);
}
ConnectionFactory.getInstance().commit();
}
// PARA ATUALIZAÇÃO...
public void atualizarParentescos(List<Parentesco> parentescos) throws SQLException {
for (Parentesco parentesco : parentescos) {
atualizarParentesco(parentesco);
}
ConnectionFactory.getInstance().commit();
}
Sacou a ideia? Que acha??
Abraços!
R
Saquei, mas tipo vc saberia me dizer como fazer o update caso queira dar continuidade no que já tenho, é que tipo no projeto em si não tenho nada com essas estrutura sabe.
É só você colocar esses métodos na sua classe de persistência, criar uma nova classe de conexões e pronto! Qual a dúvida nisso? Se fosse mexer com arquitetura, eu mudaria milhões de coisas, mas fazendo o que falei acima já resolve seu problema.
Criado 25 de julho de 2011
Ultima resposta 26 de jul. de 2011
Respostas 3
Participantes 2