簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM