有很多查询的程序就停止了,没有例外

时间:2018-02-26 20:14:27

标签: java mysql database jdbc

我正在运行一个程序,该程序正在查询数千个人。通过列表的大约2/3,它只是停止......没有例外,没有。它不会继续下去。

我不确定这里到底发生了什么,为什么它会停止。我没有看到数据有任何问题(无论如何都会产生异常)。我连续做了太多查询吗?

提前感谢任何建议。

File inputFile = new File(datafile);
BufferedReader br = new BufferedReader(new FileReader(inputFile));
List <WRLine> empList = new ArrayList<>();
String s;
int counter = 0;
while ((s = br.readLine()) != null) {
  String[] sLine = s.split(",");
  if (sLine.length > 3) {
    try {
      //if it's a number, it's not a name.  Skip the line.
      int i = Integer.parseInt(sLine[0].trim());
    } catch (Exception e) {
      //if it's not a number and not blank, add it to the list
      if (!sLine[2].equals("")) {
        try {
          int q = Integer.parseInt(sLine[2].trim());
          WRLine wr = new WRLine(sLine[0], sLine[2], sLine[3]);
          empList.add(wr);
        } catch (Exception ex) {
          //continue
        }
      }
    }
  }
}
//empList contains 1,998 items
Map<String, Integer> resultMap = new HashMap<>();
Iterator i = empList.iterator();
try {
  String connectionURL = "jdbc:mysql://" + ip + ":" + port + "/" + dbName + "?user=" + userName + "&password=" + pw;
  Class.forName("com.mysql.jdbc.Driver");
  Connection conn = DriverManager.getConnection(connectionURL);
  PreparedStatement ps = null;
  ResultSet rs = null;
  String query = "";
  while (i.hasNext()) {
    WRLine wr = (WRLine) i.next();
    System.out.println("Searching " + wr.getName() + "...");
    query = "Select count(*) as APPLIED from request where (requestDate like '%2017%' or requestDate like '%2018%') AND officer=(select id from officer where employeenumber=?)";
    ps = conn.prepareStatement(query);
    ps.setString(1, wr.getEmployeeNum());
    rs = ps.executeQuery();
    while (rs.next()) {
      int queryResult = rs.getInt("APPLIED");
      //if the division is already in there
      if (resultMap.containsKey(wr.getDivision())) {
        Integer tmp = resultMap.get(wr.getDivision());
        tmp = tmp + queryResult;
        resultMap.put(wr.getDivision(), tmp);
      } else {
        resultMap.put(wr.getDivision(), queryResult);
      }
    }
  }

  rs.close();
  ps.close();
  conn.close();
} catch (Exception e) {
  e.printStackTrace();
}
//report by division

0 个答案:

没有答案