2017-06-17 66 views
0

我有两个表与有关它们的外键: 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(); 
    } 
+0

假设您可以直接访问带有列名称的结果集值。 –

回答

0

这是很容易得到表的值。您只需提供已在ResultSet中获得的帐户表的列名称即可。

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

这里帐户ID存储在你已经从数据库中结果检索结果集对象在你的SQL设置

0

1)包括账户数据,像这样:

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)确保在finally区块关闭Statement

4)你不需要遍历整个结果集,因为你只需要一条记录。只需将while替换为if即可。

+0

没有工作......它显示错误上线 \t \t \t \t u.setAccountType(rsu.getString(“accountType”)); – Space

+0

什么是错误。这里我只是猜测你在'User'对象上有'setAccountType'方法。 – tsolakp