日期:2014-05-19  浏览次数:20839 次

SOS 奇怪的现象,老手来看看问题出在哪里!
简单描述下:简单的小步骤,用DAO操作数据库,
查询结果用list接口,for循环输出,
问题出在输出上,查询的应该是数据库标的全部数据,只是输出了数据库的全部数据记录,这表共有18条记录,结果输出了18条,但都是输出的list链表的最后一位索引,没有报错,推算是我逻辑上的错误,运行单条通过ID查询可任意正常显示.请前辈指教!
查询结果如下:
------------------------------
这是查询结果:
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
ID:18name:测试User
-------------------------------------------------------------------------

这是DAO类;
package com.jsp.DAO;

import java.sql.*;
import java.util.*;


public class UserDAO {
public List getUser(){
List<User> list = new ArrayList<User>();
Connection con = Conn.getcConnection();
try {
PreparedStatement ps= con.prepareStatement("select * from users");
ResultSet rs=ps.executeQuery();
while (rs.next()) {
User uss= new User();
uss.setUserId(rs.getInt(1));
uss.setUsername(rs.getString(2));
uss.setPassword(rs.getString(3));
uss.setEmail(rs.getString(4));
uss.setGrade(rs.getInt(5));
list.add(uss);
}
//这里要关闭数据库
rs.close();
ps.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
------------------------------------------------------------------------
这是测试类

public static void main(String[] args) {
UserDAO dao = new UserDAO();
List<User> list = dao.getUser();
for(int j = 0; j < list.size();j++){
User us = list.get(j);
System.out.println("ID:"+us.getUserId()+"name:"+us.getUsername());
}
}
——————————————————————————————————————————————————————
通过单条ID查询输出结果:
---------------------------
id:1 Name:admin
---------------------------

------解决方案--------------------
这个问题 有些人遇到的是 只能读取 第一条 有的 只能读取 最后一条 反正 乱七八糟的 都有 ! 我

估计就是 数据库 缓存造成的 重复执行了缓存中的 同一条 sql ! 如果 换成了 Statement 还是如此 那

就不知道咋回事了 水平有限 啊!