Boa tarde, fiz uma breve busca no google e no forum mas não encontrei uma solução.
Estou lendo uma planilha do excel criando os objetos e inserindo numa tabela do banco de dados. Estou utilizando jdbc, firebird.
O problema que uma das colunas é chave primaria da tabela e pode haver repetição na planiha, o banco esta retornando excção, como continuar inserindo e ignorar a exceção?
Estou fazendo assim:
public void leituraINC(String arquivo) throws BiffException, IOException, SQLException{
Workbook workbook = Workbook.getWorkbook(new File(arquivo));
PreparedStatement stmt = null;
try {
Sheet sheet = workbook.getSheet(0);
int linhas = sheet.getRows();
System.out.println("Iniciando a leitura da planilha XLS:");
ContaContabilDB contaContabilDB = new ContaContabilDB();
String sql = "insert into eincContaContabil (cdContabil, cdEmpresa, deContabil, flAgrupa, flExportaCCusto, cdContabilAux) values (?, ?, ?, ?, ?, ?)";
stmt = DataSource.getConexao().prepareStatement(sql);
for(int i = 0; i < linhas; i++){
Cell cell1 = sheet.getCell(0, i);
Cell cell2 = sheet.getCell(1, i);
Cell cell3 = sheet.getCell(2, i);
Cell cell4 = sheet.getCell(3, i);
Cell cell5 = sheet.getCell(4, i);
String content1 = cell1.getContents();
String content2 = cell2.getContents();
String content3 = cell3.getContents();
String content4 = cell4.getContents();
String content5 = cell5.getContents();
if("ANALITICA".equals(content5)){
System.out.println("Inserindo linha "+i);
ContaContabil contaContabil = new ContaContabil();
contaContabil.setCdEmpresa(1);
contaContabil.setCdContabil(content1);
contaContabil.setCdContabilAux(content2);
contaContabil.setDeContabil(content3.trim());
contaContabil.setFlAgrupa("N");
contaContabil.setFlExportaCCusto("N");
contaContabilDB.insert(contaContabil, stmt);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("Importação concluida");
workbook.close();
}
}
meu insert
public void insert(ContaContabil contaContabil, PreparedStatement stmt) throws SQLException {
try {
stmt.setString(1, contaContabil.getCdContabil());
stmt.setInt (2, contaContabil.getCdEmpresa());
stmt.setString(3, contaContabil.getDeContabil());
stmt.setString(4, contaContabil.getFlAgrupa());
stmt.setString(5, contaContabil.getFlExportaCCusto());
stmt.setString(6, contaContabil.getCdContabilAux());
stmt.executeUpdate();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}