显示数据库中的数据表

时间:2014-03-08 20:53:31

标签: java jsf jdbc primefaces

我正在尝试将数据库中的数据显示到数据表中,但我没有得到任何结果。我使用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;
    }
}

3 个答案:

答案 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的执行结果。我认为在你的情况下你试图从表资产和位置得到一个结果,所以你应该使用两个表之间的联合。