2016-04-13 45 views
1

我有關於調用next的問題!ResultSet定位不正確

我寫了一個代碼,它必須計算在我的ArrayList中出現關鍵字的次數;但是當循環數爲偶數時;這是行不通的!

我知道這裏有很多解決的問題;但我無法解決我的代碼中的錯誤。 這裏是我的代碼:

public static ResultSet getBins(Connection conn, String tableName){ 
    ResultSet distinctBin = null; 
    try { 
     Statement distinctBinsSt = conn.createStatement(
      ResultSet.TYPE_SCROLL_INSENSITIVE, 
      ResultSet.CONCUR_UPDATABLE); 
     distinctBin = distinctBinsSt.executeQuery("select bin, placedescr from " + tableName + " ORDER BY bin ASC limit 151"); 

    }catch(SQLException e){e.printStackTrace();} 
    return distinctBin; 
} 
public static Map <String,Integer> placeDescCounter(ArrayList<String> binDescription){ 
    Map<String, Integer> wordCount = new HashMap<String, Integer>(); 
     FlickrReader tagfileReader = new FlickrReader(); 
     for (String placeTag: binDescription) 
    { 
     Integer count = wordCount.get(placeTag); 
     wordCount.put(placeTag, (count==null) ? 1 : count+1); 
    } 
    return wordCount; 

} 
public static ResultSet getBinInfo(Connection conn, String tableName){ 
    ResultSet binInfo = null; 
    try { 
     Statement binInfoSt = conn.createStatement(
       ResultSet.TYPE_SCROLL_INSENSITIVE, 
       ResultSet.CONCUR_UPDATABLE); 
     binInfo = binInfoSt.executeQuery("select bin, count(bin) from " + tableName + " group by bin order by bin ASC;"); 
     binInfo.last(); 
     binInfo.beforeFirst(); 
    }catch(SQLException e){e.printStackTrace();} 
    return binInfo; 
} 
public static void main(String[] args) throws SQLException, ClassNotFoundException{ 
Connection conn = connectPG(); 
    String tableName= "tagcounterdebug"; 
    ResultSet bins = getBins(conn, tableName); 
    ResultSet binsInfo = getBinInfo(conn,tableName); 
    String placeDescriptions; 
    List<String> placeDescription; 
    ArrayList<String> binDescriptions = new ArrayList<String>(); 
    int bin =0; 
    bins.last();bins.beforeFirst(); 

    while(binsInfo.next()){ 
     int defaultBin = binsInfo.getInt("bin"); 
     int binSize = binsInfo.getInt("count"); 
     printDebug("loop conter " + (binSize - 1)); 
     bins.next(); 
     for (int i=0; i < binSize; i++){ 
      bin = bins.getInt("bin"); 
      placeDescriptions = bins.getString("placedescr").toLowerCase(); 
      placeDescriptions = placeDescriptions.substring(placeDescriptions.indexOf("[")+1 , placeDescriptions.indexOf("]")); 
      placeDescription = Arrays.asList(placeDescriptions.split("\\s*;\\s*")); 
      HashSet<String> hashSetDescriptions = new HashSet<String>();//create a HashSet for tokens to calculate less 
      hashSetDescriptions.addAll(placeDescription); 
      binDescriptions.addAll(hashSetDescriptions); 
      bins.next(); 
     } 
     printDebug("****\n defBin: " +defaultBin + " bin: " +bin + "\n****"); 
     Map<String, Integer> tagCount = new HashMap<String, Integer>(); 
     tagCount = placeDescCounter(binDescriptions); 
     for (String name: tagCount.keySet()){ 
      String key =name.toString(); 
      String value = tagCount.get(name).toString(); 
      System.out.println(key + " " + value); 
     } 
    } 
} 
} 
+0

什麼不行?是否有錯誤訊息? – brso05

+0

是的,它寫道,我應該可能調用Next();但我做到了;我試圖改變並放在不同的地方;但它不起作用! – Raha1986

+0

這不應該被標記爲postgresql。 –

回答

0

感謝每一位回答;

這個錯誤出現了,因爲我限制了我可以從DB獲得的行;它不能通過循環。