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