LinkedList<Message> messages = new LinkedList<Message>();
<span style="color:#ff0000;"> Message m = new Message();</span>
try
{
String sql = "select * from chat where sender=? and accepter=?";
Connection con = DBUtil.getConnection();
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1,sender);
pstmt.setString(2,accepter);
ResultSet rs = pstmt.executeQuery();
while(rs.next())
{
//封装结果集的时候,每一个记录应该用一个新建的对象,而不是一个全局的
m.setSender(rs.getString("sender"));
m.setAccepter(rs.getString("accepter"));
m.setContent(rs.getString("content"));
m.setSendTime(rs.getString("sendTime"));
m.setGet(rs.getString("isGet")=="1"?true:false);
setGetMessage(rs.getString("id"));//设置消息为已经取出
messages.add(m);
}
采用全局的一个变量,查询聊天消息记录,查询出来,messages中添加的全是重复消息,
想法:
可能,定义的全局的Message变量,假如在内存中分配的地址是0x2312
即是变量的引用是:0x2312
m的内容始终在变化,但是list中添加的是mesaag的引用,
list中的元素是这样的:
1 ---》0x2312
2 ---》0x2312
3 ---》0x2312
4 ---》0x2312
所以即使双方共同发了很多消息,
list中存储的全是 最后一条消息,
好机智!哈哈哈哈