如何将逗号分隔的字符串存储到表中

时间:2014-05-01 08:23:12

标签: java

我试图将逗号分隔的字符串插入表格

这是我的灵魂:

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);
        }

终于得到了解决方案:)

2 个答案:

答案 0 :(得分: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);
    }

}

答案 1 :(得分:-1)

这是由于不正确的分裂以识别阵列中纬线长度的位置。

更改代码以使用多个拆分占位符,例如';'','

示例

// ; 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
相关问题