尝试在JDBC中解析和插入行时发生java.lang.parseInt(UnknownSource)错误

尝试在JDBC中解析和插入行时发生java.lang.parseInt(UnknownSource)错误,java,jdbc,parse-error,Java,Jdbc,Parse Error,我试图解析数据中的信息,并使用JDBC将其插入数据库。但是,在尝试这样做时,我得到了java.lang.parseInt(UnknownSource)错误。以下是我编写的代码: public void testAddStation(String r){ long st = System.currentTimeMillis(); String str = r; String row[]= str.split(","); Station s = new Stat

我试图解析数据中的信息,并使用JDBC将其插入数据库。但是,在尝试这样做时,我得到了java.lang.parseInt(UnknownSource)错误。以下是我编写的代码:

public void testAddStation(String r){   
    long st = System.currentTimeMillis();
    String str = r;
    String row[]= str.split(",");
    Station s = new Station();
    s.setPrimaryID(row[0]);
    s.setSecondaryID(row[1]);
    s.setStationName(row[2]);
    s.setState(row[3]);
    s.setCountry(row[4]);
    s.setLatitude(Double.parseDouble(row[5]));
    s.setLongitude(Double.parseDouble(row[6]));
    s.setElevation(Double.parseDouble(row[7]));
    s.setMesoNetID(row[8]);
    s.setNetworkName(row[9]);
    s.setStatus(row[10]);
    s.setPrimaryProviderId(Integer.parseInt(row[11]));
    s.setPrimaryProvider(row[12]);
    s.setSecondaryProviderId(Integer.parseInt(row[13]));
    s.setSecondaryProvider(row[14]);
    s.setTertiaryProviderId(Integer.parseInt(row[15]));
    s.setTertiaryProvider(row[16]);
    s.setWims_Id(row[17]);
    //System.out.println(s.getStationName());
    //System.out.println(s.getPrimaryID());

    rep.addStation(s);
    N=N+1;
    long et = System.currentTimeMillis();
    System.out.println("total station created: " + N + "\tinsert per row: "+(et - st));
}
下面是我在控制台窗口中收到的错误消息:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at karki.jdbc.repo.Check.testAddStation(Check.java:40)
at karki.jdbc.repo.CSVFile.readCSV(CSVFile.java:36)
at karki.jdbc.repo.CSVFile.listFiles(CSVFile.java:20)
at karki.jdbc.repo.CSVFile.listStationCSV(CSVFile.java:59)
at karki.jdbc.repo.CSVFile.main(CSVFile.java:82)

有人能告诉我我可能做错了什么吗?

根据异常信息,您的问题可能出现在以下几行中:

s.setPrimaryProviderId(Integer.parseInt(row[11]));
s.setPrimaryProvider(row[12]);
s.setSecondaryProviderId(Integer.parseInt(row[13]));
s.setSecondaryProvider(row[14]);
s.setTertiaryProviderId(Integer.parseInt(row[15]));
s.setTertiaryProvider(row[16]);
具体来说,就是那些包含Integer.parseInt()代码的行,因为异常很可能是抱怨第[11]行第[13]行或第[15]行实际上是空字符串“”,而不是数值

在设置值之前,您可以在其中测试有效的数值,如果是非数值,则在其中放置一些默认整数值


您是否检查了CSV文件在所有要分析的字段中的有效性?

您应该检查以确保输入字符串有效,并且在代码中还需要检查无效的输入数据。异常的相关部分如下:
java.lang.NumberFormatException:对于输入字符串:“
我无法从脚本本身判断,因为我不知道代码中的确切行号,但下面几行中的一个parseInt调用接收到的是空字符串(
),而不是有效的数字输入:

s.setPrimaryProviderId(Integer.parseInt(row[11]));
s.setSecondaryProviderId(Integer.parseInt(row[13]));
s.setTertiaryProviderId(Integer.parseInt(row[15]));
您应该包括如下检查:

if(!"".equals(row[11])){ //If row[11] is not an empty string
    s.setPrimaryProviderId(Integer.parseInt(row[11]));
}
else{
    // Handle the case where this part of the data is empty
}
您还应该在parseDouble行中包含这些检查