繁体   English   中英

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

[英]servlet show only one data from database not all

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的类。

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

getset gs=new getset();

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

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

您正在/仅/内部设置/保存一个对象,

使用if ,您仅在第一次输入

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM