1. 程式人生 > >for迴圈查詢資料庫,把結果放在集合裡面,但是集合的長度卻始終為1?

for迴圈查詢資料庫,把結果放在集合裡面,但是集合的長度卻始終為1?

 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迴圈之外就可以了!