2014-05-01 46 views
-3

我嘗試逗號分隔字符串插入表如何逗號分隔字符串存儲到一個表

這裏是我的Soultion:

String str = "83.320869,17.735924,83.322868,17.737820,83.323715,17.738564"; 
List<String> list = Arrays.asList(str.split(",")); // split-ing the string` 
ArrayList<Double> ala = new ArrayList<Double>(); 
ArrayList<Double> alo = new ArrayList<Double>(); 
for (String i : list) { 

      double d = Double.parseDouble(i); 

      if (d > 82 & d < 84) { 

       ala.add(d); 

      } else { 
       alo.add(d); 
      } 

     } 
     for(int in =0 ; in<=2; in++){ 
      String sql2 = "insert into routes values(" + ala.get(in) + "," + alo.get(in)+ ")"; 
      stmt.executeUpdate(sql2); 
     } 

終於得到了解決:)

回答

0

只要有在列表中逗號分隔的項目的正確數量,這並不使基於所述緯度/經度對值的任何假設。儘管如此,我還是試圖包含一張支票,以確保您不會在列表末尾出現奇怪的經度。

public static void main(String[] args) { 
    String str = "83.320869,17.735924,83.322868,17.737820,83.323715,17.738564"; 
    List<String> list = Arrays.asList(str.split(",")); // split-ing the string 
    Iterator<String> i = list.iterator(); 
    double lat = 0, lon = 0; 
    while (i.hasNext()) { 
     lat = Double.parseDouble(i.next()); 
     lon = Double.parseDouble(i.next()); 
     System.out.println("lat=" + lat + ", long=" + lon); 
    } 

} 
+0

謝謝它的作品:) – pankaj

-1

這是由於不恰當的分割來識別陣列中經緯度的位置。

更改您的代碼以使用多個拆分佔位符,如​​3210和','

// ; is to separate a pair of lat-longs 
String str = "83.320869,17.735924;83.322868,17.737820;83.323715,17.738564"; 

List<String> latLongsList = Arrays.asList(str.split(";")); // split-ing the string 

String sql2 = "insert into routes values(?, ?)"; 

// use prepared statement to bind values with query 
PreparedStatement pst = con.prepareStatement(sql2); 

for (String latLongTogether : latLongsList) { 
    // comma is to separate lat and long value 
    String lat_long[] = latLongTogether.split(","); 
    double lat = Double.parseDouble(lat_long[ 0 ]); 
    double lon = Double.parseDouble(lat_long[ 1 ]); 

    if ((lat > 82 && lat < 84) && (lon > 16 && lon < 18)) { 
     pst.setDouble(1, lat); 
     pst.setDouble(2, lon); 

     pst.executeUpdate(); 
     pst.clearParameters(); 
    } // if 
} // for 
+0

爲什麼使用多個分割佔位符像';'和','當由'分裂,'期望 – KNU

+1

據需要,因爲在'str'第一2個號碼是一個單一的一套LAT-長等。爲了便於理解,我用2個拆分佔位符進行了演示。這樣既可以一次讀取併發送到查詢。否則,for循環需要一個計數器等待,直到讀取下一個值作爲批次值。 –

+0

除非有人明白這點,否則downvote是沒有意義的。 –

相關問題