package HenkTk; import java.sql.*; import java.util.Vector; import java.io.*; import javax.servlet.jsp.*; /** Sisältää staattisia metodeita, joilla voi tehdä kyselyitä henkilötietokantaan. Connection yhdista(JDBCajuri, url) void kysely(con, sqlLause) void kyselyHTML(con, sqlLause) int paivita(con, sqlLause) */ public 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. */ //********************************************* public 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; } } //********************************************* //********************************************* public 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(); } } //********************************************* public static void kyselyHTML(ResultSet rs, PrintWriter out) throws SQLException { // ResultSetMetaData sisältää tietoa kannan kentistä ResultSetMetaData metaData = rs.getMetaData(); out.println(""); for (int i = 1; i <= metaData.getColumnCount(); ++i) out.print(""); out.println(""); /* ResultSet-olion tulostaminen */ while (rs.next()) { out.println(""); for (int i = 1; i <= metaData.getColumnCount(); ++i) { String data = rs.getString(i); if (data == null) data = "null"; out.print(""); } out.println(""); } out.println("
" + metaData.getColumnName(i) + "
" + data.trim() + "
"); } //********************************************* // JSP:n käyttämä metodi public static void kyselyHTML(ResultSet rs, javax.servlet.jsp.JspWriter out) throws SQLException, IOException { // ResultSetMetaData sisältää tietoa kannan kentistä ResultSetMetaData metaData = rs.getMetaData(); out.println(""); for (int i = 1; i <= metaData.getColumnCount(); ++i) out.print(""); out.println(""); /* ResultSet-olion tulostaminen */ while (rs.next()) { out.println(""); for (int i = 1; i <= metaData.getColumnCount(); ++i) { String data = rs.getString(i); if (data == null) data = "null"; out.print(""); } out.println(""); } out.println("
" + metaData.getColumnName(i) + "
" + data.trim() + "
"); } //********************************************* /** 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; } }