Johann Mitlöhner 2010
Wie der Name schon sagt, dient JDBC zur Datenbank-Anbindung von Java Programmen. Um Daten aus einer Tabelle abzufragen, müssen die gleichen Schritte geschehen, die wir vom interaktiven Arbeiten mit der DB kennen:
Mit wenigen Änderungen können wir diese Vorlage für alle Abfragen verwenden:
<%@ page import="java.sql.*" %> <h1>Artikel</h1> <% String url = "jdbc:mysql://localhost.localdomain/j0012345"; // Postgres: "jdbc:postgresql:j0012345" try { DriverManager.registerDriver(new com.mysql.jdbc.Driver()); // Postgres: org.postgresql.Driver() Connection conn = DriverManager.getConnection(url, "j0012345", "..."); Statement stmt = conn.createStatement (); ResultSet rset = stmt.executeQuery("select nr, bez, preis from artikel"); out.println("<table><tr><td>Nr<td>Bezeichnung<td>Preis"); while (rset.next()) { out.println("<tr><td>"+rset.getString("nr") +"<td>"+rset.getString("bez") +"<td align=right>"+rset.getString("preis")); } out.println("</table>"); } catch (SQLException e) { out.println(e); } %>
Die connection-spezifischen Details werden besser in eine eigene Komponente ausgelagert, zB eine Java Bean.
<jsp:useBean id="db" class="tools.DB" scope="session"/> <b>Artikel</b> <% try { db.connect(); db.query("select nr, bez, preis from artikel"); out.println("<table>"); while (db.next()) { out.println("<tr>" + "<td>" + db.get("nr") + "<td>" + db.get("bez") + "<td align=right>" + db.get("preis") ); } out.println("</table>"); } catch (Exception e) { out.println(e); } %>
Die Daten werden in einem HTML-Formular eingegeben, wo als Option action der Name der Insert JSP Seite angegeben wird, z.B.
<form action=insertkunde.jsp> <input type=text name=nr> <br> <input type=text name=name> <br> <input type=text name=adresse> <br> <input type=submit value=OK> </form>
Beim Insert müssen wir executeUpdate() statt executeQuery() verwenden. Den SQL-String merken wir uns in der Variable sql für eine eventuelle Fehlermeldung.
<%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost.localdomain/j0012345"; try { String nr = request.getParameter("nr"); String name = request.getParameter("name"); String adresse = request.getParameter("adresse"); DriverManager.registerDriver(new com.mysql.jdbc.Driver()); Connection conn = DriverManager.getConnection(url, "j0012345", "..."); Statement stmt = conn.createStatement (); String sql = "insert into kunde (nr, name, adresse)" + " values(" + nr + ", '" + name + "', '" + adresse + "')"; try { stmt.executeUpdate(sql); out.println("<br> Erfassung erfolgreich."); } catch (Exception e) { out.println("<br> Fehler bei Erfassung: " + sql + "<br>" + e); } } catch (Exception e) { out.println(e); } %>
Beachten Sie
DB.java in ~/www/WEB-INF/classes/tools
package tools; import java.sql.*; public class DB { String url = "jdbc:mysql://localhost.localdomain/j8325200"; public Statement getstmt() { Statement st = null; try { DriverManager.registerDriver(new com.mysql.jdbc.Driver()); Connection conn = DriverManager.getConnection(url, "j8325200", "password"); st = conn.createStatement (); } catch (Exception e) { } return st; } }
javac -cp /usr/share/java/mysql-connector-java.jar DB.java
.jsp file:
<%@ page import="java.sql.*" %> <jsp:useBean id="db" class="tools.DB" scope="page" /> <% Statement st = db.getstmt(); ResultSet rs = st.executeQuery("select nr, bez from artikel"); out.println("<table>"); while (rs.next()) { out.println("<tr><td>" + rs.getString("nr") + "<td>" + rs.getString("bez")); } out.println("</table>"); %>