為什么我查詢出來的值,會被下一條語句中的值覆蓋啊,每次查詢出來的所有數(shù)據(jù),都是最后一條數(shù)據(jù)
List<Message> messageList = new ArrayList<Message>();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection;
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/micro_message","root","root");
StringBuilder sql = new StringBuilder("select id,command,desription,content from message where 1=1");
List<String> paramList = new ArrayList<String>();
if(command != null && !"".equals(command.trim())){
sql.append("and command=?");
paramList.add(command);
}
if(desription != null && !"".equals(desription.trim())){
sql.append("and desription like '%' ? '%' ");
paramList.add(desription);
}
PreparedStatement statement = connection.prepareStatement(sql.toString());
for(int i=0;i<paramList.size();i++){
statement.setString(i + 1,paramList.get(i));
}
ResultSet rs = statement.executeQuery();
Message message = new Message();
while(rs.next()){
message.setId(rs.getString("id"));
message.setCommand(rs.getString("command"));
message.setDesription(rs.getString("desription"));
message.setContent(rs.getString("content"));
messageList.add(message);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
return messageList;
2016-08-19
Message message = null;
while(rs.next()){
?message = new Message();
message.setId(rs.getString("id"));
message.setCommand(rs.getString("command"));
message.setDesription(rs.getString("desription"));
message.setContent(rs.getString("content"));
messageList.add(message);
}
每次循環(huán)都要新聲明一個(gè)對象,你那樣寫其實(shí)就只聲明了一個(gè)message 對象。
2017-06-19
謝謝樓上的答案,我糾結(jié)了幾天了,真是豁然開朗啊
2016-09-16
這個(gè)初學(xué)者經(jīng)常碰到,我以前也是,一般把新生成的對象放到循環(huán)里就ok了!