package dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;import model.Stu;
import util.JDBCUtil;public class SelectFenYe {
public List selectFenYe(){
Stu stu = new Stu();
int i=0;
List list = new ArrayList();
try{
JDBCUtil jdbc = new JDBCUtil();
Connection conn=jdbc.getConnection();
String sql="select * from fenyeExample";
PreparedStatement pstm = conn.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
// System.out.print(sql);
while(rs.next()){
i++;
// int id = rs.getInt(1);
String uid=rs.getString(2);
String name=rs.getString(3);
String password = rs.getString(4);
stu.setUid(uid);
stu.setName(name);
stu.setPassword(password);
list.add(stu);
}
}catch(Exception e){
e.printStackTrace();
}
System.out.println("ssssssssssss"+i);
return list;
}
public static void main(String args[]){
SelectFenYe dao =new SelectFenYe();
List list =dao.selectFenYe();
Iterator iter = list.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
}
}我的意思是 把数据从数据库 全取出来,然后全部打印出来我把数据全都放到LIst 里面 返回一List
我在数据库插了26条数据然后我取的时候 怎么只取到了 最后一条数据最后 我又循环的打印 可是循环了26次 都是最后一条数据不知道为什么 怎么才能全部取出来啊 请教了
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;import model.Stu;
import util.JDBCUtil;public class SelectFenYe {
public List selectFenYe(){
Stu stu = new Stu();
int i=0;
List list = new ArrayList();
try{
JDBCUtil jdbc = new JDBCUtil();
Connection conn=jdbc.getConnection();
String sql="select * from fenyeExample";
PreparedStatement pstm = conn.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
// System.out.print(sql);
while(rs.next()){
i++;
// int id = rs.getInt(1);
String uid=rs.getString(2);
String name=rs.getString(3);
String password = rs.getString(4);
stu.setUid(uid);
stu.setName(name);
stu.setPassword(password);
list.add(stu);
}
}catch(Exception e){
e.printStackTrace();
}
System.out.println("ssssssssssss"+i);
return list;
}
public static void main(String args[]){
SelectFenYe dao =new SelectFenYe();
List list =dao.selectFenYe();
Iterator iter = list.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
}
}我的意思是 把数据从数据库 全取出来,然后全部打印出来我把数据全都放到LIst 里面 返回一List
我在数据库插了26条数据然后我取的时候 怎么只取到了 最后一条数据最后 我又循环的打印 可是循环了26次 都是最后一条数据不知道为什么 怎么才能全部取出来啊 请教了
打印sql语句
然后放到你的那个数据库里看看情况
2、
打印list.size()
3、
不要用PreparedStatement,可以改为Statement
4、
循环输出的语句是否有误
5、
list放入iterator是不是会出问题以上自己解决
祝你成功
但是我在SelectFenYe 方法里面循环就可以全部循环出来 但是放在外面就不行了为什么不能用PreparedStatement 我用的没问题啊
实例化的只有一个
其实你每次都是在修改同一个对象
list真正添加的还是那个你在外面生成的对象
但是list在添加的时候会检验该对象的hash值
因为同一个对象
所以hash相同
于是就覆盖了这个就是原因放在里面的话没一个循环都new出来一个
于是hash不同
所以自然就可以添加进去了我刚才没仔细看你的代码
ls的解决了你的问题就好了
注意以后要在内部new出来才行PreparedStatement好像是有什么问题的
忘记了
我一直都不用的
除非要使用参数的情况下
这个在外面的话 值实例化了一次
后面的值会覆盖前面的值..
这个跟list本身有关比如使用Set的话嘛就可以重复添加了的
方法一:
while(){|
Stu stu = new Stu()
}
方法二://用数组做,返回Stu数组
Stu [] stu = new Stu()
while(){|
i++;
stu[i].setUid(uid);
stu[i].setName(name);
stu[i].setPassword(password);
}//OK
我给当做另一个去处理的因为实例只有一个
你在外面new的只有一个u
那么u就将指向堆中的那唯一的一个
你循环中的每一次都在修改的这个u其实是同一个因为堆地址还是那唯一的那个
所以你添加的都是同一个刚才我把它当作Map处理的
不好意思给你解释错了啊
while(){
stu = new Stu()
}
这样效率高一些,提高性能
List list =dao.selectFenYe();
Iterator iter = list.iterator();
while(iter.hasNext()){
System.out.println(iter.next().getName()); //取name的话
}
iter.next().getName 没有Name 啊
iter.next()返回的是Object类型
Object当然没有你那些方法了
需要转型后才能使用的真是的
多看看API嘛