I-7. JSP zur Anzeige einer Datenbanktabelle
Das folgende Programmierbeispiel soll in einem HTML-Formular die
Verbindungsdaten zu einer Datenbank erfragen und dann per JSP-Datei
eine Tabelle aus dieser Datenbank als HTML-Tabelle darstellen.
Benötigt werden also zwei Dateien:
- Die HTML-Datei 'DbTabelleLesen.htm' enthält das HTML-Formular.
- Die JSP-Datei 'DbTabelleLesen.jsp' nimmt die
Verbindungsdaten vom HTML-Formular entgegen, stellt eine Verbindung
zur Datenbank her, liest die Datenbanktabelle aus und erzeugt denHTML-Code für die HTML-Tabelle, der zur Darstellung an denWebbrowser geschickt wird. Speichern Sie den folgenden HTML-Code in der Datei 'DbTabelleLesen.htm'im Verzeichnis '.../Tomcat/webapps/ROOT'. Bitte beachten:Diese HTML-Datei hat die Dateiendung '.htm', während dieim '<form>'-Tag beim 'action'-Attributeingetragene Datei die Dateiendung '.jsp' hat.
<html>
<body>
<form method="post"action="DbTabelleLesen.jsp"><pre>
Db-Treiber <input size=60type="text" name="prmDbDrv" value='org.hsqldb.jdbcDriver'><br>
Db-URL <input
size=60 type="text" name="prmDbUrl"
value='jdbc:hsqldb:C:/hSqlDbData/myDB'> <br>
Benutzer <input size=60
type="text"
name="prmUsr" value='sa'><br>
Kennwort <input size=60
type="password"
name="prmPwd" value=''><br>
Tabellenname <input size=60
type="text"
name="prmTab" value=''><br>
SQL-Kommando <input size=60
type="text"
name="prmSql" value=''>
(optional)<br>
<input type="submit"
name="submit" value="Datenbanktabelle
anzeigen">
</pre></form>
</body>
</html>
|
Speichern Sie den folgenden JSP-Code in der Datei 'DbTabelleLesen.jsp'
im Verzeichnis '.../Tomcat/webapps/ROOT':
<html>
<body>
<%@ page import="java.sql.*" isThreadSafe="false" %>
<%
String sDbDrv = request.getParameter( "prmDbDrv" );
String sDbUrl = request.getParameter( "prmDbUrl" );
String sUsr = request.getParameter( "prmUsr" );
String sPwd = request.getParameter( "prmPwd" );
String sTable = request.getParameter( "prmTab" );
String sSql = request.getParameter( "prmSql" );
if( null != sTable && 0 < sTable.length() &&
(null == sSql || 0 == sSql.length()) )
sSql = "SELECT * FROM " + sTable;
if( null == sDbDrv || 0 >= sDbDrv.length() ||
null == sDbUrl || 0 >= sDbUrl.length() ||
null == sSql || 0 >= sSql.length() )
{
out.println( "<br>Fehler: Mindestens Db-Treiber und Db-URL "
+ "sowie entweder Tabellenname oder SQL-Kommando "
+ "müssen ausgefüllt werden!<br>" );
}
else
{
Class.forName( sDbDrv );
Connection cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery( sSql );
ResultSetMetaData rsmd = rs.getMetaData();
int n = rsmd.getColumnCount();
out.println( "<table border=1 cellspacing=0><tr>" );
for( int i=1; i<=n; i++ ) // Achtung: erste Spalte mit 1 statt 0
out.println( "<th>" + rsmd.getColumnName( i ) + "</th>" );
while( rs.next() )
{
out.println( "</tr><tr>" );
for( int i=1; i<=n; i++ ) // Achtung: erste Spalte mit 1 statt 0
out.println( "<td>" + rs.getString( i ) + "</td>" );
}
out.println( "</tr></table>" );
rs.close();
st.close();
cn.close();
}
%>
<br><a href="DbTabelleLesen.htm">Zurück zum Eingabeformular</a>
</body>
</html>
|
Im HTML-Formular wird für den Db-Treiber 'org.hsqldb.jdbcDriver'
und für die Db-URL 'jdbc:hsqldb:C:/hSqlDbData/myDB'
vorgeschlagen. Diese Vorgaben können Sie durch die für Ihre
Datenbank passenden Texte ersetzen und so zur Laufzeit auf
unterschiedliche Datenbanken umschalten. Unter techdocs/java-sql.htm#JDBC
finden Sie die entsprechenden Einträge für verschiedene
SQL-Datenbanken.
Können Sie auf keine bereits installierte Datenbank zugreifen, können
Sie die vorgeschlagenen Vorgabewerte so lassen. Sie setzen eine
installierte hSqlDb-Datenbank voraus. Deren Installation ist sehr
einfach:
- Beenden Sie Tomcat
- Kopieren Sie die Datei 'hsqldb.jar' in das Verzeichnis '%JAVA_HOME%/jre/lib/ext'
- Erzeugen Sie das Datenverzeichnis 'C:\hSqlDbData'
- Erzeugen Sie in diesem Datenverzeichnis die Datenbank 'myDB'
mit einer ersten Testtabelle (z.B. 'xx')
Diese Schritte sind genauer unter techdocs/java-sql.htm#hSqlDb
beschrieben.
Das obige Source-Code-Beispiel ist funktionsfähig, aber ohne
Fehlerbehandlung.
Starten Sie Tomcat und starten Sie die Anwendung im Webbrowser
mit der Eingabe der URL "http://localhost/DbTabelleLesen.htm"
bzw. von einem anderen Rechner aus mit "http://<TomcatServerIPAdresseOderComputername>/DbTabelleLesen.htm".
Geben Sie gültige Datenbankzugangsdaten und einen gültigen
Tabellennamen ein, z.B. so:
- Erster Test: nur Tabellenname, z.B. 'xx'
- Zweiter Test: SQL-Kommando, z.B. 'SELECT i, d FROM xx WHERE
i=123;'
Bitte beachten Sie unbedingt die wichtigen Kommentare zu diesem
Programmierbeispiel unter techdocs/jsp.htm#DatenbankTabelleAnzeigen.
Weitergehendes finden Sie unter techdocs/java-sql.htm
und techdocs/sql.htm.
|