ResultSet закрыт, печатает только первый "SUBKATEGORI" - PullRequest
0 голосов
/ 11 февраля 2019

Я запускаю код и продолжаю получать Resultset закрыт, что-то не так с циклами?Строки, которые взяты из for (), также имеют несколько «SUBKATEGORIER».Пожалуйста, помогите мне, я новичок в Java.

Object[] valt = jList1.getSelectedValues();

for (Object ettVal : valt) {
    String enSuperkategori = ettVal.toString();
    System.out.println(enSuperkategori);

    try {
        Statement stmt2 = connection.createStatement();
        ResultSet rs2 = stmt2.executeQuery("SELECT SUBKATEGORIID FROM 
SUBKATEGORI JOIN SUPERKATEGORI ON SUPERKATEGORI.SUPERKATEGORIID = 
SUBKATEGORI.SUPERKATEGORI WHERE SUPERKATEGORI.SKNAMN ='" + enSuperkategori 
+"'");

        while(rs2.next());
        {
        PreparedStatement ps2 = connection.prepareStatement("INSERT 
INTO ANVANDARE_SUBKATEGORI (ANVANDARE,SUBKATEGORI) VALUES(?,?)");
        ps2.setString(1, angivetAnv);
        ps2.setInt(2, rs2.getInt("SUBKATEGORIID"));
        System.out.println(rs2.getInt("SUBKATEGORIID"));
        ps2.executeUpdate();
        }

    } catch (SQLException ex) {
        System.out.println(ex.getMessage());
    }
}

1 Ответ

0 голосов
/ 11 февраля 2019

Я не знаю точную причину ошибки, но я предполагаю, что ваш первый набор результатов закрывается, как только вы запускаете внутреннюю вставку.Хорошей новостью является то, что вы можете запустить всю вставку, используя следующий отдельный запрос:

INSERT INTO ANVANDARE_SUBKATEGORI (ANVANDARE, SUBKATEGORI)
SELECT SUBKATEGORIID, SUBKATEGORIID
FROM SUBKATEGORI s
INNER JOIN SUPERKATEGORI sp
    ON sp.SUPERKATEGORIID = s.SUPERKATEGORI
WHERE sp.SKNAMN = ?

Ваш соответствующий код Java:

String sql = "INSERT INTO ANVANDARE_SUBKATEGORI (ANVANDARE, SUBKATEGORI) ";
sql += "SELECT SUBKATEGORIID, SUBKATEGORIID ";
sql += "FROM SUBKATEGORI s ";
sql += "INNER JOIN SUPERKATEGORI sp ";
sql += "ON sp.SUPERKATEGORIID = s.SUPERKATEGORI ";
sql += "WHERE sp.SKNAMN = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, enSuperkategori);
ps.executeUpdate();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...