Datenbankintegration

Einleitung

Mittels JDBC können die meisten Datenbanksysteme eingebunden werden. Der Verzicht auf strukturierte Inhaltetypen ist genau dann sinnvoll, wenn Sie bereits umfangreiche Datenbestände oder komplexe Relationen in Ihrem Datenmodell haben. In diesem Fall sollten Sie Ihre Datenbank weiter nutzen.



MySQL

Mit folgender JSP (in JSTL) können Sie Datenbankabfragen in Ihre Seite integrieren. Es erfolgt zuerst die Definition der Datenbankabfrage und dann die Ausgabe in einer Schleife.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>

<%-- Parameter "id" (z.B. index.html?id=5) wird beim Seitenaufruf mit übergeben --%>
<div>
<c:set var="pk" value="${param.id == null? "" : param.id}" /> <c:catch var="exception"> <%-- Connection-String mit Credentials --%> <sql:setDataSource var="mydb" user="opencms" password="******" url="jdbc:mysql://*******.rus.uni-stuttgart.de/opencms" driver="com.mysql.jdbc.Driver"/> <%--SQL-Statement, das abgefeuert werden soll, ? werden mit Parameterwerten ersetzt--%> <sql:query var="myquery" dataSource="${mydb}"> SELECT sitename, version, status FROM site where sitePK = ? ; <sql:param value="${pk}"/> </sql:query> </c:catch> <c:choose> <c:when test="${exception != null}"> Fehler: ${exception.message} </c:when> <c:otherwise> <%-- Resultset wird iteriert --%> <c:forEach items="${myquery.rows}" var="row"> Sitename: ${row.sitename} Version: ${row.version} Status: ${row.status} <c:if test="${row.status != 'productive'}"> &nbsp;<strong>not productive!</strong> </c:if> <br/> </c:forEach> </c:otherwise> </c:choose>
</div>