这是数据库select方法public List getgameperson() {
// TODO Auto-generated method stub
List<Gameperson> list = new ArrayList<Gameperson>();
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = DBO.getconnection();
st =(Statement) conn.createStatement();
String sql = "select * from gameperson";
rs = (ResultSet) st.executeQuery(sql);
if(rs.next()){
Gameperson gp = new Gameperson();
gp.setId(rs.getInt("id"));
gp.setCompetitorId(rs.getInt("competitorId"));
gp.setGameId(rs.getInt("gameId"));
list.add(gp);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
DBO.close(st, rs, conn);
}
return list;
}
这是拿出方法:
<%
List list = new ArrayList();
GamepersonDao gpo = new GamepersonDaoImpl();
list = gpo.getgameperson();
if(list!=null){
for (int i=0;i<list.size();i++){
Gameperson gp = list.get(i);
%>
<%=gp.getId()%>
<%=gp.getGameId() %>
<%=gp.getCompetitorId()%>
public List getgameperson() {
// TODO Auto-generated method stub
List<Gameperson> list = new ArrayList<Gameperson>();
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = DBO.getconnection();
st =(Statement) conn.createStatement();
String sql = "select * from gameperson";
rs = (ResultSet) st.executeQuery(sql);
while(rs.next()){
Gameperson gp = new Gameperson();
gp.setId(rs.getInt("id"));
gp.setCompetitorId(rs.getInt("competitorId"));
gp.setGameId(rs.getInt("gameId"));
list.add(gp);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
DBO.close(st, rs, conn);
}
return list;
}
rs.next那行,把if改成while
你检查下,是不是代码设计方式不对。我看不出你这个读出来的是二维数组的。
下面是JSP 之前写的几组list都能完整的读取数据库信息,就是这个有问题。
%>
<%=gp.getId()%>
<%=gp.getGameId() %>
<%=gp.getCompetitorId()%>
<%
GameDao go = new GameDaoImpl();
List<Game> list1 = new ArrayList();
list1= go.getgame();
if(list1!=null){
for(int i=0;i<list1.size();i++){
Game g = list1.get(i);
%>
<p><%=g.getGamename() %></p>
<p><%=g.getId() %>
<%}
} %>
同样的创建方法和过程,但是下面的可以显示所有数据,上面的只能显示一组数据
把查询数据库方法中的i换成while就行了
int i=0;
while(i<list.size()){
Gameperson gp = list.get(i);
i++;
这样么?
还是只有一组数据出现
在jsp中List定义也要这么定义 List list = new ArrayList();
首先,ArrayList拿值的过程是没有问题的,问题在于你查数据库后,从返回的结果集中取数据时,你用了if(rs.next){....}这里不会循环去往集合中赋值。
这里只会放入一条结果。应该将if改为while这样才是循环的过程。
循环那个地方写错了,把if改成while就好了!
if(rs.next()){
Gameperson gp = new Gameperson();
gp.setId(rs.getInt("id"));
gp.setCompetitorId(rs.getInt("competitorId"));
gp.setGameId(rs.getInt("gameId"));
list.add(gp);
}
这一句有问题的,即使查出来的数据有多条,list也只会添加一条记录,因为循环语句体只执行一次。