for (int i = 0; i < info.size(); i++) {
User b = (User) info.get(i);
rs = stmt.executeQuery("Select ARTIST,TITLE from SONGS WHERE ID = (SELECT ID from USERS WHERE USERNAME = " + "'" + b.Username + "'" + ")");
while (rs.next()) {
String artist = rs.getString("ARTIST");
String title = rs.getString("TITLE");
b.Songs.add(artist + "-" + title);
}
System.out.println(b.getSongs());
}
所以这是我的代码,其中包含一个用户数组(info数组),每个用户都有一个名为songs的数组,用于存储他们拥有的每首歌曲。我想用他们的用户名选择歌曲数据库中的用户歌曲,工作正常,然后将其添加到该用户数组。
然而,当我运行代码时会发生这种情况: info数组中有2个用户。
我得到了第一个用户&#39; Tim&#39;
获取他所拥有的歌曲:&#34;女王 - 我们将摇滚你&#34;并将其添加到他的数组,工作正常。
然后循环并选择下一个用户,但是当我添加到他的阵列时,它包含女王歌曲,然后是他的歌曲。
我不确定如何将它们添加到第二个用户歌曲数组中,SQL工作正常并且只选择那些用户歌曲,但是一些来自前一个用户的b.songs如何传递给下一个用户?
答案 0 :(得分:0)
你能加入错误的专栏吗?
Select ...from SONGS WHERE ID = (SELECT ID from USERS where ...)
似乎错了,SONGS.ID是用户的ID。
不应该是
Select ...from SONGS WHERE USER_ID = (SELECT ID from USERS where ...)
另外,假设您构造查询字符串的方式,请注意,如果username包含'
字符,您的代码将失败。
而且,它容易受到SQL Injection的攻击 - 这是一个严重的安全威胁。