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的类。
答案 0 :(得分:2)
您仅创建一个对象,并且在while循环中每次都覆盖它而不是创建一个新对象。
getset gs=new getset();
您应该每次在while循环中创建一个新对象,设置值,然后将该对象添加到列表中。然后迭代并打印该列表以测试其运行方式。
因此,这应该是循环gs=new getset();
中的第一条语句(如果您在循环外部声明了gs并将其设置为null),然后将gs添加到循环末尾的列表中(内部,不在外面)。
答案 1 :(得分:1)
您仅在/ if内设置/保存一个对象
使用if
时,您是第一次输入
进入while
循环时,您将覆盖值,直到最后一次数据更新。
例如,要获取多个值,请向List
添加数据