查询从两个不同的表中获取userimage路径和用户信息

时间:2012-03-06 12:34:55

标签: java sql database struts2

我正在开发一个相册网络应用程序,其中我使用了两个表USER_INFORMATIONUSER_PHOTOUSER_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>

因此,在我显示时,它会正确显示每个用户信息,但在路径列中为空白。

预期输出:我想显示用户信息名称,年龄,地址和IMAGEPATH(在另一个表中不止一条记录)。

1 个答案:

答案 0 :(得分:0)

小提示:在从结果集中读取数据时,使用列名而不是其索引。 示例:fatherName = rs.getString("FATHERNAME");

如果您更改查询并且更清晰,这将更容易维护。

现在,您在代码中的哪个位置读取了FILEPATH列?您只读取前五列(name,father_name,age,address,id),但没有为FILEPATH列读取任何内容。

相关问题