2017-06-13 2 views
0

Meine Tabelle:ResultSet.next immer falsch, bevölkerten Tabelle

create table ranking (rennId int not null, fId int not null, pos int not null, CONSTRAINT key PRIMARY KEY (rennId,fId)) 

Mein Java-Code:

try { 
    Connection con = DriverManager.getConnection(url, user, password); 
    ResultSet ret = con.createStatement().executeQuery("select * from ranking"); 
    while (ret.next()) 
     System.out.println("test"); 
} catch (SQLException e) { e.printStackTrace(); } 

Manueller Test:

sql> select * from ranking 
[2017-06-13 03:21:59] 3 rows retrieved starting from 1 in 52ms (execution: 45ms, fetching: 7ms) 

Geprüft als eigenständige
Nur auf auftritt diese Tabelle

+0

Ich glaube, es ist der Vertrag von try-with-resources, um das Schließen der in der try-Klausel angegebenen Ressource zu garantieren, nachdem der Ausdruck fertig ist. Ich glaube, dass die Ergebnismenge auch am Ende des try-Blocks geschlossen wird, daher ruft next() false zurück, weil nichts da ist –

+0

@ user7790438 Aber die Schleife über das Ergebnis ist vollständig _inside_ der 'try'-Block. Warum würden Sie erwarten, dass Ressourcen zu diesem Zeitpunkt geschlossen werden? –

+0

Sind die Namen der Tabellen in der Erstellungs- und der Auswahlabfrage anders? – SHG

Antwort

0

Anscheinend war es ein Problem mit DataGrip kombiniert. Dieser Code wählt tatsächlich alle Einträge aus, die in dieser Anwendung erstellt wurden, ignoriert jedoch alle über DataGrip erstellten Einträge. Scheint mit einem kombinierten Primärschlüssel verwandt zu sein