簡體   English   中英

查詢以從兩個不同的表中獲取userimage路徑和用戶信息

[英]query to get userimage path and user information from two different tables

我正在開發一個相冊Web應用程序,其中使用了兩個表USER_INFORMATIONUSER_PHOTO USER_INFORMATION僅包含一個記錄的用戶記錄, USER_PHOTO包含單個用戶一張以上的照片。 我想獲取用戶信息的數量以及他們的userimage路徑,並將其存儲在Java Pojo變量(如列表)中,以便可以在struts 2中使用display標記顯示它。

桌子是這樣的。

        USER_PHOTO                                   USER_INFORMATION
   =======================                     =================================
   | IMAGEPATH | USER_ID |                     | USER_NAME | AGE | ADDRESS |ID |
   =======================                     =================================
   |xyz        | 1       |                     | abs       | 34  |  sdas   | 1 | 
   |sdas       | 1       |                     | asddd     | 22  | asda    | 2 |
   |qwewq      | 2       |                     | sadl      | 121 | asd     | 3 |
   | asaa      | 1       |                     ==================================
   | 121       | 3       | 
   =======================

如您所見,user_id = 1有3張照片,user_id = 2有2張照片,3張有一張照片。 現在,我想編寫查詢以獲取用戶信息及其圖像路徑。

所以我嘗試使用下面的代碼將其存儲在ArrayList中,我的代碼在Action類中:

 public ArrayList loadData() throws ClassNotFoundException, SQLException {
ArrayList userList = new ArrayList();
con = DriverManager.getConnection(url + dbName, userName, password);
PreparedStatement ps = null;
try {
    String name;
    String fatherName;
    int Id;
    String filePath;
    int age;
    String address;
    String query = "SELECT NAME,FATHERNAME,AGE,ADDRESS,ID,FILEPATH FROM USER_INFORMATION ,USER_PHOTO WHERE ID=USER_ID";
    ps = con.prepareStatement(query);
    ResultSet rs = ps.executeQuery();
    while (rs.next()) {
        name = rs.getString(1);
        fatherName = rs.getString(2);
        age = rs.getInt(3);
        address = rs.getString(4);
        Id = rs.getInt(5);
        UserData list = new UserData();
        list.setName(name);
        list.setFatherName(fatherName);
        list.setAge(age);
        list.setAddress(address);
        userList.add(list);
    }
    ps.close();
    con.close();

我的JSP如下所示:

<display:table id="data" name="sessionScope.UserForm.userList" requestURI="/userAction.do" pagesize="1" >
  <display:column property="name" title="NAME" sortable="true"   />
  <display:column property="fatherName" title="User Name" sortable="true"  />
  <display:column property="age" title="AGE" sortable="true"   />
  <display:column property="address" title="ADDRESS" sortable="true"  />
  <display:column property="filePath" title="PATH" sortable="true"  />
</display:table>

因此,當我顯示它時,它會正確顯示每個用戶信息,但在path列中為空白。

預期的輸出:我想顯示用戶信息名稱,年齡,地址和IMAGEPATH(在另一個表中有多個記錄)。

一個小技巧:從結果集中讀取數據時,請使用列名而不是其索引。 示例: fatherName = rs.getString("FATHERNAME");

如果您更改查詢,這將更易於維護,並且更加清晰。

現在,您在代碼中的哪里讀取FILEPATH列? 您僅讀取前五列(名稱,父親名稱,年齡,地址,ID),但FILEPATH列未讀取任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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