如何根据外键从参考表中获取值?

时间:2017-06-17 04:24:30

标签: java mysql jdbc relation

我有两张表与外键相关联: enter image description here

我使用SQL查询从两个表中检索值:

User u = new User();

String sql = "SELECT * FROM user INNER JOIN account ON user.id = account.user WHERE user.id = 1 ";

try {
        Statement stm = con.createStatement();

        ResultSet rsu = stm.executeQuery(sql);

        while(rsu.next()){
            u.setFname(rsu.getString("fname"));
            u.setLname(rsu.getString("lname"));
            u.setMname(rsu.getString("mname"));
            u.setGender(rsu.getString("gender"));
            u.setAddress(rsu.getString("address"));
            u.setCitizenship(rsu.getLong("citizenship"));

            /**
            *
            *   Here i want to get values of account table and set it on 
            *   user object to return u
            *
            */
        }

        return u;

    } catch (SQLException e) {
        e.printStackTrace();
    }

2 个答案:

答案 0 :(得分:0)

很容易获得表格的值。您需要做的就是提供您在ResultSet中已经获得的帐户表的列名。

u.setAccountID(rsu.getLong("accId"));

此处,帐户ID存储在您已从结果集

中的数据库中检索到的结果集对象中

答案 1 :(得分:0)

1)在SQL中包含帐户数据,如下所示:

SELECT user.*, account.* FROM user INNER JOIN account ON user.id = account.user WHERE user.id = 1

2)访问帐户字段就像用户字段:

u.setAccountType(rsu.getString("accountType")); u.setAccountNo(rsu.getString("accountNo"));

3)确保关闭Statement区块中的finally

4)您不需要迭代整个结果集,因为您只需要一条记录。只需将while替换为if