select-Arraylist的一个问题,从数据库拿到多组数据但是只能读出一组

问题描述

Arraylist的一个问题,从数据库拿到多组数据但是只能读出一组

这是数据库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都能完整的读取数据库信息,就是这个有问题。

解决方案四:

<%
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()%>

<%
}
} %>

<%
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() %>
 <%}
 } %>
同样的创建方法和过程,但是下面的可以显示所有数据,上面的只能显示一组数据

解决方案五:

<%
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()%>

<%
}
} %>

<%
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++;
这样么?
还是只有一组数据出现

解决方案八:

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这样才是循环的过程。

时间: 2024-09-19 09:12:03

select-Arraylist的一个问题,从数据库拿到多组数据但是只能读出一组的相关文章

一个简单的数据库查询问题

问题描述 一个简单的数据库查询问题 一个文章表,一个评论表,通过文章的ID关联,现在要查出文章表中的一条数据和评论表中关于这篇文章的评论的个数,求帮忙 谢谢了. 解决方案 select w.*(select count(*) from 评论表 p where p.id=w.id ) as cnt from 文章表 w where w.id="" ""看明白不? 解决方案二: select w.neirong as 内容count(*) as 评论个数 from we

PHP实现的一个简单的数据库操作类

PHP实现的一个简单的数据库操作类 实现的功能: - 在实例化的时候能设置连接字符集 - 在实例化的时候能连接数据库 - 在实例化的时候能选择默认数据库 - 销毁对象时关闭数据库 代码如下: <?php // 数据库操作类MySQLDB class MySQLDB { // 声明属性 private $server; private $username; private $password; public $default_db; public $link; // 声明构造函数 public f

如何使用C#创建一个三层的数据库应用程序

程序|创建|数据|数据库 如何使用C#创建一个三层的数据库应用程序1.分析在我们这个程序中采用如下的层次:Web层,业务实体层,数据层.其中:业务实体层负责Web层与数据层之间的数据交换.数据层仅仅代表数据库.Web层通过业务实体层来访问数据库.我们的中间的业务实体层采用WebService.2.实例我们通过一个实例来学习三层架构.(1) 以sql2000为例建立TestUser数据库.表的sql脚本(在查询分析器中执行即可):/****** Object: Table [dbo].[Custo

介绍一个增强的数据库类CDataSet

因为MFC完全支持数据库应用程序的开发,所以大多数数据库应用都使用CDatabase和CRecordset类,并且类向导(Class Wizard)提供了快速简易的方式来使用这两个类.有一点不足的就是当应用程序涉及到多表数据库时,类向导将产生大量的关于记录集的源码文件使得工程给人的感觉很臃肿混乱. 本文介绍如何使用一个模板记录集类来降低类向导所产生的记录集文件的数量,同时增强记录集类(CRecordset)的功能.这个模板记录集类叫做:CDataSet.它的主要目的是降低代码量,为数据对象数组提

自制的一个操作sqlite数据库的库文件

 自制的一个操作sqlite数据库的库文件,写时用的IDE是KDevelop3.3.4. 头文件: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #ifndef _SQLITE3LIB_H_ #define _SQLITE3LIB_H_   #include <stdio.h> #include <stdlib.h> #include<sqlite3.

求sql-求一个sql,oracle数据库问题

问题描述 求一个sql,oracle数据库问题 A表: id字段 aid字段 10000 99999 10000 88888 10001 77777 10001 66666 B表: did字段 77777 有以上两张表,A表id字段对应多个aid字段.要查询出来A表id字段,并且对应的所有aid字段都不在B表中.以上情况要求查询出10000. 求大神指点,谢谢. 解决方案 select id from A where id not in(select t.id from A t,B s wher

(在HTML中)我先将select控件中选取的值取出放入数据库(已经实现),然后我需要查看信息的时候从数据库中取出数据,如何让select控件显示我从数据库中取出的对应的值呢?

问题描述 前台<htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title>UntitledPage</title></head><body><formid="form1"runat="server"><div><selectid="Sele

如何使用SQLyogEnt来建立一个简单的数据库

如果你选择PHP进行网站建设,那你必须懂得php建立数据库,那用mysql数据就是必须的了.刚接触php的朋友也许对这个mysql数据库很陌生,但如果有一款非常好用的数据库管理工具,那是用起来就方便多了,笔者几天就向大家介绍一款mysql的管理工具SQLyogEnt,笔者是用的 SQLyogEnt是英文版,目前好像没有中文版,由于功能强大,所以SQLyogEnt很受PHP用户的喜爱,接下就用实例来讲解下如何使用 SQLyogEnt来建立一个简单的数据库. 今天我建立的数据库名叫"mydb&quo

创建一个Java应用数据库的桌面应用程序

本教程将展示如何创建一个 Java 的桌面应用程序,用来访问以及更新数据库.本教程利用 NetBeans IDE 6.0 支持的以下技术: Java 持久化 API (JPA),帮助你使用Java 代码来与数据库接合 Beans 绑定技术 (JSR 295) ,为不同的JavaBeans 控件提供一种方式来相互同步属性值.举一个例子, 你可以使用 Beans 绑定技术来保持 JTable 可视化控件中各单元的值与实体类中各域的值同步.(在这里,实体类表示数据表) Swing 应用程序框架 (JS