gpt4 book ai didi

java - servlet 仅显示数据库中的一项数据而不是全部

转载 作者:行者123 更新时间:2023-12-01 19:45:00 25 4
gpt4 key购买 nike

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>");

上面是我从数据库检索数据的代码当我朗读代码时,它只显示一个数据,即数据库中的最后一个数据当我使用(if条件)时,它会显示第一列数据,为什么?当我搜索但没有找到任何解决方案时,我无法理解。

getset 是 getter 和 setter 的类。

最佳答案

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

getset gs=new getset();

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

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

关于java - servlet 仅显示数据库中的一项数据而不是全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53690181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com