import java.sql.*; import java.util.Vector; /** Sisältää staattisia metodeita, joilla voi tehdä kyselyitä henkilötietokantaan. Connection yhdista(JDBCajuri, url) void tulostaKyselynTulos(con, sqlLause) int paivita(con, sqlLause) */ class HenkiloTietokanta { /** Metodi lataa ajurin ja ottaa yhteyden toisena parametrinä annettuun url-osoitteeseen. url on joko DSN tai URL. Palauttaa Connection-olion tai null, jos yhteyden muodostaminen ei onnistunut. */ //********************************************* static Connection yhdista(String JDBCajuri, String url) { try { Class.forName(JDBCajuri).newInstance(); // avataan yhtetys Connection conn = DriverManager.getConnection(url); return conn; } catch (SQLException e) { System.out.println("Yhteys ei muodostunut:" + e); return null; } catch (ClassNotFoundException e) { System.out.println("Ajuria ei löytynyt:" + e); return null; } catch (InstantiationException e) { System.out.println("Ajuria ei löytynyt:" + e); return null; } catch (IllegalAccessException e) { System.out.println("Ajuria ei löytynyt:" + e); return null; } } //********************************************* //********************************************* static void kysely(ResultSet rs) throws SQLException { // ResultSetMetaData sisältää tietoa kannan kentistä ResultSetMetaData metaData = rs.getMetaData(); for (int i = 1; i <= metaData.getColumnCount(); ++i) System.out.print(metaData.getColumnName(i) + " "); System.out.println(); System.out.println("-------------------------------------------------------------"); /* ResultSet-olion tulostaminen */ while (rs.next()) { for (int i = 1; i <= metaData.getColumnCount(); ++i) { String data = rs.getString(i); if (data == null) data = "null"; System.out.print(data.trim() + "\t"); } System.out.println(); } } /********************************************* Metodilla muutetaan tietokantaa parametrinä annetun SQL-kyselyn perusteella. Palauttaa muutettujen tietueiden lukumäärän */ public static int paivita(Connection con, String sqlLause) throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException { Statement stmt = con.createStatement(); System.out.println("Suoritetaan lause: " + sqlLause); //Suoritetaan lause ja kerätään tiedot merkkijonoon. int tulos = stmt.executeUpdate(sqlLause); stmt.close(); return tulos; } /********************************************* JDBC 2:ssa kaikki Update-lauseet voi suorittaa yhdellä kertaa. Tällöin ohjelmassa käytetään eräajopäivitystä (Batch). */ public static void paivita(Connection con, String[] sqlLause) throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException, BatchUpdateException { con.setAutoCommit(false); Statement stmt = con.createStatement(); for (int i=0; i