简单描述下:简单的小步骤,用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
---------------------------

解决方案 »

  1.   

    你这问题  很早之前  就有很多人遇到过   似乎没有满意的答案哦 !建议你在  while 中就开始 打印 id值  看看查询的结果集 是否正确! 数据库有缓冲区的 可能执行查询时 读取了缓冲区的数据  不用 PreparedStatement   改用 Statement  试试!Statement 会使数据库进行sql语句编译 !  建议  有参数时用PreparedStatement   ,无参数 或 条件固定 时 可以用 Statement
      

  2.   

    这个问题   有些人遇到的是  只能读取  第一条 有的  只能读取  最后一条  反正 乱七八糟的 都有 !   我估计就是 数据库 缓存造成的  重复执行了缓存中的 同一条  sql !  如果 换成了   Statement 还是如此 那就不知道咋回事了  水平有限  啊!
      

  3.   

    问题得到解决 ,查了很多资料,原因是因为我在User类封装时使用了Static 属性,这就造成了get和set方法的属性是静态的,我在链表操作是是NEW出来的新的数据对象,但方法是静态的所以只显示最后一条的静态属性结果~
    最后还是谢谢你对我回答~