JDBC: Query’s uitvoeren op de database

Query’s uitvoeren op een database betekent dat de gegevens worden doorzocht. U doet dit door SQL statements naar de database te sturen. Om dit te doen, hebt u eerst een open databaseverbinding nodig. Zodra u een open verbinding hebt, moet u een Statement-object maken, zoals dit:

Statement statement = connection.createStatement();

Zodra u de Statement hebt gemaakt, kunt u deze gebruiken om SQL-query’s uit te voeren, zoals dit:

String sql = "select * from people";ResultSet result = statement.executeQuery(sql);

Wanneer u een SQL-query uitvoert, krijgt u een ResultSet terug. De ResultSet bevat het resultaat van uw SQL-query. Het resultaat wordt teruggegeven in rijen met kolommen met gegevens. Je itereert de rijen van de ResultSet als volgt:

while(result.next()) { String name = result.getString("name"); long age = result.getLong ("age");}

De ResultSet.next() methode gaat naar de volgende rij in de ResultSet, als er meer rijen zijn. Als er meer rijen zijn, geeft het waar terug. Als er geen rijen meer zijn, retourneert het false.

U moet next() ten minste een keer oproepen voordat u gegevens kunt lezen. Voor de eerste next() oproep wordt de ResultSet gepositioneerd voor de eerste rij.

U kunt kolom gegevens voor de huidige rij krijgen door het aanroepen van een aantal van de getXXX() methoden, waarbij XXX een primitieve data type is. Bijvoorbeeld:

 result.getString ("columnName"); result.getLong ("columnName"); result.getInt ("columnName"); result.getDouble ("columnName"); result.getBigDecimal("columnName"); etc.

De kolomnaam om de waarde van te krijgen wordt doorgegeven als parameter aan elk van deze getXXX() methode aanroepen.

U kunt ook een index van de kolom in plaats daarvan doorgeven, zoals dit:

 result.getString (1); result.getLong (2); result.getInt (3); result.getDouble (4); result.getBigDecimal(5); etc.

Om dat te laten werken moet u weten welke index een bepaalde kolom heeft in de ResultSet. Je kunt de index van een bepaalde kolom krijgen door de ResultSet.findColumn() methode op te roepen, zoals dit:

 int columnIndex = result.findColumn("columnName");

Als je grote hoeveelheden rijen itereren, kan het verwijzen naar de kolommen door hun index sneller zijn dan door hun naam.

Wanneer je klaar bent met het itereren van de ResultSet moet je zowel de ResultSet en de Statement object dat het gemaakt heeft sluiten (als je er klaar mee bent, dat is). U doet dit door het aanroepen van hun close() methoden, zoals deze:

result.close();statement.close();

Natuurlijk moet u deze methoden binnen een finally blok aanroepen om ervoor te zorgen dat ze worden aangeroepen, zelfs als er een uitzondering optreedt tijdens ResultSet iteratie.

Volledig voorbeeld

Hier is een volledig query code voorbeeld:

Statement statement = connection.createStatement();String sql = "select * from people";ResultSet result = statement.executeQuery(sql);while(result.next()) { String name = result.getString("name"); long age = result.getLong("age"); System.out.println(name); System.out.println(age);}result.close();statement.close();

En hier is het voorbeeld weer, met try-finally blokken toegevoegd. Merk op dat ik de catch blokken heb weggelaten om het voorbeeld korter te maken.

Statement statement = null;try{ statement = connection.createStatement(); ResultSet result = null; try{ String sql = "select * from people"; ResultSet result = statement.executeQuery(sql); while(result.next()) { String name = result.getString("name"); long age = result.getLong("age"); System.out.println(name); System.out.println(age); } } finally { if(result != null) result.close(); }} finally { if(statement != null) statement.close();}

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.