有类如下
//a simple bean
class sbean {
String username;
//Getter and Setter 省略。
}
连接数据库取数据
库数据如下:
username
chen8m
kok
admin
//从数据库里取数据存在BEAN里面,再放在ArrayList
里面,但最后取出来username却变成了全部都是admin了。Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/strust";
String user = "root";
String password = "root";
Connection con = DriverManager.getConnection(url,user,password);
Statement stat = con.createStatement();
String sql = "select * from userInfor";
ResultSet result = stat.executeQuery(sql);
ArrayList alluser = new ArrayList();
userInfor temp = new userInfor();
while (result.next()) {
System.out.print(result.getString("username"));
System.out.print(" ");
temp.setUsername(result.getString("username"));
alluser.add(temp);
}
for (int i=0; i<alluser.size(); i++) {
userInfor t = (userInfor)alluser.get(i);
System.out.println(t.getUsername()+"--"+i);
}
}
//但是下面的代码改变了一点点就OK了。
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/strust";
String user = "root";
String password = "root";
Connection con = DriverManager.getConnection(url,user,password);
Statement stat = con.createStatement();
String sql = "select * from userInfor";
ResultSet result = stat.executeQuery(sql);
ArrayList alluser = new ArrayList();
//在这里做改变,把TEMP放在了循环里就OK了。
while (result.next()) {
userInfor temp = new userInfor(); System.out.print(result.getString("username"));
System.out.print(" ");
temp.setUsername(result.getString("username"));
alluser.add(temp);
}
for (int i=0; i<alluser.size(); i++) {
userInfor t = (userInfor)alluser.get(i);
System.out.println(t.getUsername()+"--"+i);
}
}
打字的框好小啊,都不知道问题有没有说清楚,
请看到的高手帮忙耐心看看,
问题是解决了,但就是不明白是为什么。
上一段代码调试的时候,明明都存在LIST里是对的
就是存到最后一个整个LIST就都变了。
望高手帮忙了,小弟在此谢过。
//a simple bean
class sbean {
String username;
//Getter and Setter 省略。
}
连接数据库取数据
库数据如下:
username
chen8m
kok
admin
//从数据库里取数据存在BEAN里面,再放在ArrayList
里面,但最后取出来username却变成了全部都是admin了。Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/strust";
String user = "root";
String password = "root";
Connection con = DriverManager.getConnection(url,user,password);
Statement stat = con.createStatement();
String sql = "select * from userInfor";
ResultSet result = stat.executeQuery(sql);
ArrayList alluser = new ArrayList();
userInfor temp = new userInfor();
while (result.next()) {
System.out.print(result.getString("username"));
System.out.print(" ");
temp.setUsername(result.getString("username"));
alluser.add(temp);
}
for (int i=0; i<alluser.size(); i++) {
userInfor t = (userInfor)alluser.get(i);
System.out.println(t.getUsername()+"--"+i);
}
}
//但是下面的代码改变了一点点就OK了。
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/strust";
String user = "root";
String password = "root";
Connection con = DriverManager.getConnection(url,user,password);
Statement stat = con.createStatement();
String sql = "select * from userInfor";
ResultSet result = stat.executeQuery(sql);
ArrayList alluser = new ArrayList();
//在这里做改变,把TEMP放在了循环里就OK了。
while (result.next()) {
userInfor temp = new userInfor(); System.out.print(result.getString("username"));
System.out.print(" ");
temp.setUsername(result.getString("username"));
alluser.add(temp);
}
for (int i=0; i<alluser.size(); i++) {
userInfor t = (userInfor)alluser.get(i);
System.out.println(t.getUsername()+"--"+i);
}
}
打字的框好小啊,都不知道问题有没有说清楚,
请看到的高手帮忙耐心看看,
问题是解决了,但就是不明白是为什么。
上一段代码调试的时候,明明都存在LIST里是对的
就是存到最后一个整个LIST就都变了。
望高手帮忙了,小弟在此谢过。
解决方案 »
- snmp4j 获取table column name的问题!
- 如何使用监听器实现画图
- 如何实现JTextField鼠标双击事件,急救!!!
- 菜鸟请教关于调度运行的问题!急!!!!!!!!!
- 给你一个坐标,如何在取当前Point下的颜色?UP给分!!
- 用JDK怎么才能生成EXE文件啊?
- 求《精通Java Swing程序设计》和《深入学习:JFC Swing-Java基础类组件集》的配套原代码!!
- 请问这里有没有搞Java3D的,大家对Java3D有怎么看法?
- 出错信息是在语句Folder.*=...下面有一个小箭头,是什么意思?不能调用folder?
- where to download JDK
- 如何用java从键盘读取一个字符而不用敲回车?
- 中文转成UTF-8问题
list(0) --------+
------- ........|.. ------- ...... ----------
list(1) --------+--> temp --------> username
------- ........|.. ------- ...... ----------
list(n) --------+
-------
而第二段程序中,temp 的作用范围仅在 { } 内,每循环一次就重新生成不同的对象,所以添加到最后也是不同的,这是正确的方法,为了与上一段进行比较,引用关系如下:------- ........... ------- ...... ----------
list(0) -----------> temp --------> username
------- ........... ------- ...... ----------
list(1) -----------> temp --------> username
-------............ ------- ...... ----------
list(n) -----------> temp --------> username
------- ........... ------- ...... ----------