for迴圈查詢資料庫,把結果放在集合裡面,但是集合的長度卻始終為1?
阿新 • • 發佈:2018-11-01
for (int i = 0; i < tell.length; i++) { String sql=""; if(tell[i]=="地址為45號"||tell[i]=="地址為23號"||tell[i]=="地址為31號"||tell[i]=="地址為50號"||tell[i]=="地址為11號"){ sql="SELECT * FROM test WHERE tell = '"+tell[i]+"' AND tnum='XXXXXX' LIMIT 1"; }else{ sql="select * from test where tell = '"+tell[i]+"' order by date desc limit 1"; } conn = JdbcUtils_DBCP.getConnection(); st=conn.prepareStatement(sql); rs=st.executeQuery(); ll=new ArrayList<Four>(); if(rs.next()){ ip=rs.getString(3); humi=rs.getString(6); temp=rs.getString(7); data=rs.getString(4); Four sf=new Four(ip, humi, temp,data); ll.add(sf); } }
for迴圈大概20多條資料,用debug也能走到rs,next()裡面,但是ll集合的長度始終是1,裡面只有一條資料?
?????
原來問題出在這裡
每次迴圈i的值改變的時候,都new了一次ll,這個是初始化的意思,所以集合裡面只有最後一條資訊,前面的資料都沒有被儲存下來,把ll=new ArrayList<Four>();放到for迴圈之外就可以了!