![](/img/trans.png)
[英]Passing data queried from database in one servlet, to another Java Servlet
[英]servlet show only one data from database not all
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的類。
您僅創建一個對象,並且在while循環中每次都覆蓋它而不是創建一個新對象。
getset gs=new getset();
您應該每次在while循環中創建一個新對象,設置值,然后將該對象添加到列表中。 然后迭代並打印該列表以測試其運行方式。
因此,這應該是循環gs=new getset();
的第一條語句gs=new getset();
(如果您在循環外部聲明了gs並將其設置為null),然后將gs添加到循環末尾的列表中(內部而不是外部)。
您正在/僅/內部設置/保存一個對象,
使用if
,您僅在第一次輸入
進入while
循環時,您將覆蓋值,直到最后一次數據更新。
例如,要獲取多個值,請向List
添加數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.