Java ORA-01722在数据库表中设置值时

Java ORA-01722在数据库表中设置值时,java,sql,excel,oracle,Java,Sql,Excel,Oracle,为什么在尝试将数据输入到表中时出现此错误 org.springframework.dao.DataIntegrityViolationException PreparedStatementCallback;SQL[插入INS_RAZNO.ZAPOSLENICI_测试值(?,,,,,,,?)];ORA-01722:无效号码 嵌套异常为java.sql.SQLException:ORA-01722:无效数字 它似乎是整数和字符串的问题,但我对类似的方法也包含整数和字符串没有问题,但它工作得很好。有什

为什么在尝试将数据输入到表中时出现此错误

org.springframework.dao.DataIntegrityViolationException

PreparedStatementCallback;SQL[插入INS_RAZNO.ZAPOSLENICI_测试值(?,,,,,,,?)];ORA-01722:无效号码

嵌套异常为java.sql.SQLException:ORA-01722:无效数字

它似乎是整数和字符串的问题,但我对类似的方法也包含整数和字符串没有问题,但它工作得很好。有什么办法解决这个问题吗

@Override
public void getExcell2() {
     final String PATH = "C:\\Workspace\\zaposlenici.xlsx";                     //putanja do excel file-a
     try {
        Workbook workbook = WorkbookFactory.create(new File(PATH));         //High level representation of a Excel workbook.
        Sheet sh = workbook.getSheetAt(0);                                  //High level representation of a Excel worksheet. 

        DataFormatter dataFormatter = new DataFormatter();                  //DataFormatter contains methods for formatting the value stored in an Cell.

        List<String> lista = new ArrayList<String>();                       //Lista sa vrijednostima svih ćelija

        sh.forEach(row -> {                                                 //sheet.forEach row
                row.forEach(cell -> {                                       //row.forEach cell
                String cellvalue = dataFormatter.formatCellValue(cell);     //formatira ćelije u string tip
                lista.add(cellvalue);
            });
        });
        workbook.close();

        ArrayList<String> lista1 = new ArrayList<String>();
        ArrayList<String> lista2 = new ArrayList<String>();
        ArrayList<String> lista3 = new ArrayList<String>();
        ArrayList<String> lista4 = new ArrayList<String>();
        ArrayList<String> lista5 = new ArrayList<String>();
        ArrayList<String> lista6 = new ArrayList<String>();


        @SuppressWarnings("unchecked")
        ArrayList<String>[] liste = new ArrayList[]{lista1, lista2, lista3, lista4, lista5, lista6};

        for (int i=0 ; i< lista.size(); i ++ ){ 
              if(lista.get(i) == null) {
                  liste[i % 6].add("NULL");
              }
              else if (lista.get(i) == "") {
                  liste[i % 6].add("NULL");
              }
              else {
              liste[i % 6].add(lista.get(i)); 
            }}


        jdbcTemplate.batchUpdate("INSERT INTO INS_RAZNO.ZAPOSLENICI_TEST VALUES (?, ?, ?, ?, ?, ?)", new BatchPreparedStatementSetter() {
            @Override           //"INSERT INTO INS_RAZNO.BULK_TEST VALUES (?, ?, ?)"                                    
            public void setValues(PreparedStatement ps, int i) throws SQLException {
                ps.setString(1, lista1.get(i));
                ps.setString(2, lista2.get(i));         
                ps.setString(3, lista3.get(i));
                ps.setString(4, lista4.get(i));
                ps.setString(5, lista5.get(i));
                ps.setString(6, lista6.get(i));
            }
            @Override
            public int getBatchSize() {
                return lista2.size();       
            }
        });


        } catch (EncryptedDocumentException | InvalidFormatException | IOException e) {
        e.printStackTrace();
        }
}    

当试图将字符串转换为数字时,会发生ORA-01722错误,并且该字符串无法转换为数字

我解决了第一行中列名称的所有字符串所造成的问题。
只是不算第一行

您可以为INS_RAZNO.ZAPOSLENICI_测试添加模式细节吗?创建表“INS_RAZNO”。“ZAPOSLENICI_测试”(PREZIME varchar(15)、IME varchar(15)、ODJEL varchar(15)、SLOŽENOST_POSLA int、STAROST int、MJESEČNI_OD int);3个varchar,3个int,但您有6个setString-您尝试了4,5,6作为
setInt
?我有字符串值的数组列表。我在上一个项目中就是这样做的,效果很好。我认为缺少setInt隐藏了一个转换问题,您是否检查了试图插入的数据?
CREATE TABLE "INS_RAZNO"."ZAPOSLENICI_TEST"
(
    PREZIME varchar(15),
    IME varchar(15),
    ODJEL varchar(15), 
    SLOŽENOST_POSLA int, 
    STAROST int, 
    MJESEČNI_OD int
);