[英]query to get userimage path and user information from two different tables
我正在开发一个相册Web应用程序,其中使用了两个表USER_INFORMATION
和USER_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.