首页 文章

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

提问于
浏览
0
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 回答

  • 1

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

    getset gs=new getset();
    

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

    所以,这应该是循环 gs=new getset(); 中的第一个语句(如果你在循环之外声明了gs并设置为null)然后将gs添加到循环结尾的列表中(内部,而不是外部) .

  • 2

    你在/ if里面只设置/保存 one 对象,

    使用 if 时,您仅在第一次进入

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

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

相关问题