Java转换为对象更改其他对象

时间:2017-04-26 12:08:07

标签: java sql arrays object casting

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如何传递给下一个用户?

1 个答案:

答案 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的攻击 - 这是一个严重的安全威胁。