servlet仅显示数据库中的一个数据,而不是全部

时间:2018-12-09 07:09:51

标签: java servlets

public static getset getdata(){
        getset gs=new getset();
     byte img[]=null;   
     ServletOutputStream sos=null;

    try {
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db","root","admin");
PreparedStatement stmt=con.prepareStatement("select * from emp");
ResultSet rs=stmt.executeQuery();

while(rs.next()){
   gs.setId(rs.getInt(1));
   gs.setName(rs.getString(2));
   gs.setCountry(rs.getString(3));
   gs.setImg(rs.getBytes(4));

}
}catch(Exception e){System.out.print(e);}

    return gs;
    }


         NewClass nc=new NewClass();
         getset a=nc.getdata();
         out.println(a.getId());
         out.println(a.getName());
         out.println(a.getCountry());
         out.println("<img src="+a.getImg()+" width=300 height=300></img>");

以上是我用于检索数据表单数据库的代码 当我朗读代码时,它只显示一个数据,即数据库中的最后一个数据 当我使用(如果有条件)时,它向我显示第一列数据为什么?搜索时我听不懂,但找不到任何解决方案。

getset是getter和setter的类。

2 个答案:

答案 0 :(得分:2)

您仅创建一个对象,并且在while循环中每次都覆盖它而不是创建一个新对象。

getset gs=new getset();

您应该每次在while循环中创建一个新对象,设置值,然后将该对象添加到列表中。然后迭代并打印该列表以测试其运行方式。

因此,这应该是循环gs=new getset();中的第一条语句(如果您在循环外部声明了gs并将其设置为null),然后将gs添加到循环末尾的列表中(内部,不在外面)。

答案 1 :(得分:1)

您仅在/ if内设置/保存一个对象

使用if时,您是第一次输入

进入while循环时,您将覆盖值,直到最后一次数据更新。

例如,要获取多个值,请向List添加数据