Java servlet只显示数据库中的一个数据,而不是所有数据 publicstaticgetset getdata(){ getset gs=new getset(); 字节img[]=null; ServletOutputStream sos=null; 试一试{ Class.forName(“com.mysql.jdbc.Driver”); Connection con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/db“,”根“,”管理“); PreparedStatement stmt=con.prepareStatement(“从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(异常e){System.out.print(e);} 返回gs; } NewClass nc=新的NewClass(); getset a=nc.getdata(); out.println(a.getId()); out.println(a.getName()); out.println(a.getCountry()); out.println(“”);
上面是我检索数据库数据表单的代码 当我运行代码时,它只显示一个数据,即来自数据库的最后一个数据 当我使用(if条件)时,它会向我显示第一列数据,为什么?我搜索时无法理解,但没有找到任何解决方案Java servlet只显示数据库中的一个数据,而不是所有数据 publicstaticgetset getdata(){ getset gs=new getset(); 字节img[]=null; ServletOutputStream sos=null; 试一试{ Class.forName(“com.mysql.jdbc.Driver”); Connection con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/db“,”根“,”管理“); PreparedStatement stmt=con.prepareStatement(“从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(异常e){System.out.print(e);} 返回gs; } NewClass nc=新的NewClass(); getset a=nc.getdata(); out.println(a.getId()); out.println(a.getName()); out.println(a.getCountry()); out.println(“”);,java,servlets,Java,Servlets,上面是我检索数据库数据表单的代码 当我运行代码时,它只显示一个数据,即来自数据库的最后一个数据 当我使用(if条件)时,它会向我显示第一列数据,为什么?我搜索时无法理解,但没有找到任何解决方案 getset是getter和setter的类。您只创建了一个对象,并且在while循环中每次都覆盖它,而不是创建一个新对象 public static getset getdata(){ getset gs=new getset(); byte img[]=null;
getset是getter和setter的类。您只创建了一个对象,并且在while循环中每次都覆盖它,而不是创建一个新对象
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>");
您应该每次在while循环中创建一个新对象,设置值,然后将该对象添加到列表中,例如。然后迭代并打印该列表以测试其运行情况
因此,这应该是循环
gs=new getset()中的第一条语句编码>(如果在循环外部声明了gs并将其设置为null),然后将gs添加到循环末尾的列表中(内部,而不是外部)。您只创建了一个对象,并且在while循环中,每次都覆盖它,而不是创建一个新对象
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>");
您应该每次在while循环中创建一个新对象,设置值,然后将该对象添加到列表中,例如。然后迭代并打印该列表以测试其运行情况
因此,这应该是循环gs=new getset()中的第一条语句编码>(如果在循环外部声明了gs并将其设置为null),然后将gs添加到循环末尾的列表中(内部,而不是外部)。在/if
使用时,如果
,则仅在第一次输入
当在
循环中输入时,将覆盖值,直到最后一次数据更新
要获取多个值,请将数据添加到列表中,例如您在while/if中仅设置/保存一个对象
使用时,如果
,则仅在第一次输入
当在
循环中输入时,将覆盖值,直到最后一次数据更新
要获取多个值,请将数据添加到列表中,例如gs
始终是同一个对象。检索所有值,但在while循环中覆盖这些值。这就是为什么最终只能得到最后一个。gs
始终是同一个对象。检索所有值,但在while循环中覆盖这些值。这就是为什么你最终只得到最后一个。考虑接受你发现最有用的答案。考虑接受你发现最有用的答案。