我正在尝试将数据库中的数据显示到数据表中,但我没有得到任何结果。我使用JDBC使用精确的select语句测试查询,看它是否返回任何行,并且它始终有效。但是,当我尝试将数据库中的数据存入我的数据表时,我得不到任何结果。我甚至制作了一个假的虚拟数据来填充我的数据表。我必须在index.xhtml文件中做错,我不知道。我能做错什么?任何帮助将不胜感激?
编辑:首先我使用他们的数据表示例使用Primefaces,然后我使用简单的jsf样式数据表,就像我在这里一样,当我尝试使用数据库时,这些都没有工作
UserDAO.java
@ManagedBean(name = "userDAO")
@SessionScoped
public class UserDAO {
private static final String USERNAME = "something";
private static final String PASSWORD = "something";
private static final String CONN_STRING =
"jdbc:sqlserver://petunia.arvixe.com.....something";
public List<Report> getUserList() {
List<Report> list = new ArrayList<Report>();
PreparedStatement ps = null;
Connection con = null;
ResultSet result = null;
try {
con = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);
String sql = "SELECT id, tag,asset_name, model, ser_no, value, \n" +
" asset_condition, asset_type FROM assets";
String sql1 = "SELECT name, address, city,state,zip, phone, district FROM location";
ps = con.prepareStatement(sql);
ps = con.prepareStatement(sql1);
result = ps.executeQuery();
while (result.next()) {
Report rep = new Report();
rep.setId(result.getInt("id"));
rep.setTag(result.getString("tag"));
rep.setName(result.getString("asset_name"));
rep.setModel(result.getString("model"));
rep.setSerial(result.getString("ser_no"));
rep.setValue(result.getFloat("value"));
rep.setCondition(result.getString("asset_condition"));
rep.setType(result.getString("asset_type"));
rep.setLocationName(result.getString("name"));
rep.setAddress(result.getString("address"));
rep.setCity(result.getString("city"));
rep.setState(result.getString("state"));
rep.setZip(result.getString("zip"));
rep.setPhone(result.getString("phone"));
rep.setDistrict(result.getInt("district"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
con.close();
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return list;
}
}
答案 0 :(得分:1)
我想你的问题就是这段代码:
ps = con.prepareStatement(sql);
ps = con.prepareStatement(sql1);
result = ps.executeQuery();
您使用语句sql
立即覆盖sql1
语句。
我想,您可能希望选择带有 THEIR assets
的{{1}}。在SQL中,您可以使用location
来实现这一目标。
答案 1 :(得分:1)
嗯,你正在做一份报告:
Report rep = new Report();
...但不将其添加到您的列表中。加上这个:
Report rep = new Report();
list.add(rep);
答案 2 :(得分:1)
如果您使用此语法
String sql = "SELECT id, tag,asset_name, model, ser_no, value, \n" +
" asset_condition, asset_type FROM assets";
String sql1 = "SELECT name, address, city,state,zip, phone, district FROM location";
ps = con.prepareStatement(sql);
ps = con.prepareStatement(sql1);
**result = ps.executeQuery()**;
你只会得到第二个querry的执行结果。我认为在你的情况下你试图从表资产和位置得到一个结果,所以你应该使用两个表之间的联合。