我在 id 列上加入了两个表,它们看起来像:
+-------+
| users |
+----+--+---+
| id | name |
+----+------+
+-------+
| posts |
+-------+------+---------+
| id | user_id | message |
+----+---------+---------+
现在我想选择所有帖子并包含用户名,其中:
SELECT * FROM posts, users WHERE user_id = users.id
然后我尝试使用以下方法获取值:
ResultSet rs = // SQL
if(rs.next()) {
rs.getInt("posts.id");
...
}
但我得到SQLException
执行时rs.getInt("posts.id")
:
java.sql.SQLException: Column 'posts.id' not found.
如何使用 JDBC 和 JavaDB/Derby 作为数据库从上面的 SQL 查询中获取值?
我怎样才能区分id
栏目中的users
and posts
检索值时的表ResultSet
?
您正在尝试检索id
值,但您使用“posts.id”来引用它。Don't
您所需要的只是列名或别名,而不是表名:
ResultSet rs = // SQL
if(rs.next()) {
rs.getInt("id");
...
}
如果您的列名称本身是“posts.id”,那么它会起作用,但如果您选择更新表,我建议使用下划线(_)而不是句点。
但是我在两个表中都有一个 id 列,我如何区分它们?
您需要指定列别名:
SELECT p.id AS post_id,
p.name,
u.id AS users_id,
p.user_id, --redundant due to relationship, omit if possible
u.message
FROM POSTS p
JOIN USERS u ON u.id = p.user_id
...并在 Java 代码中引用该列别名:
ResultSet rs = // SQL
if(rs.next()) {
rs.getInt("post_id");
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)