SUCHE MIT Google
Web virtualuniversity.ch
HOME DIDAKTIK ECDL ELEKTRONIK GUIDES HR MANAGEMENT MATHEMATIK SOFTWARE TELEKOM
DIENSTE
Anmeldung
Newsletter abonnieren
Sag's einem Freund!
VirtualUniversity als Startseite
Zu den Favoriten hinzufügen
Feedback Formular
e-Learning für Lehrer
Spenden
Autoren login
KURSE SUCHEN
Kurse veröffentlichen

Suche nach Datum:

Suche mit Schlüsselwort:

Suche nach Land:

Suche nach Kategorie:
PARTNER
ausbildung24.ch - Ausbildungsportal, Seminare, Kursen... 

 
HTMLopen.de - Alles was ein Webmaster braucht

 
PCopen.de - PC LAN Netze und Netzwerke - alles was ein IT Profi und Systemtechnicker braucht

SOFTWARE

II-17. Programmierbeispiel: Datenbank-Tabelle anzeigen

Informationen zu SQL finden Sie in sql.htm, mysql.htm und postgresql.htm.
Informationen zur Anbindung von SQL-Datenbanken unter Java mit JDBC finden Sie in java-sql.htm.
Im Folgenden wird eine JSP-Datei beschrieben, in der sowohl das Eingabe-Formular ('<form ...') als auch der die Ergebnisse auswertende und darstellende Code ('out.println(rs.getString())')zusammen in einer Datei stehen.
Das Source-Code-Beispiel ist funktionsfähig, aber ohneFehlerbehandlung.
Falls die gelesenen Daten nicht sofort ausgegeben werden (wie imBeispiel mit 'out.println()'), sondern zu einem langen Stringaddiert werden sollen, darf dies nicht durch Addition von Stringsmit dem '+'-Zeichen erfolgen, sondern muss mit StringBuffer.append()geschehen, da sonst enorm viele Ressourcen und Zeit verbrauchtwerden.
Falls die Datenbank-Verbindung von mehreren Threads benutzt werdenkann, müssen alle entsprechenden Funktionen Thread-sicher gemachtwerden, z.B. mit 'synchronized' oder mit '<%@ pageisThreadSafe="false" %>'.
Beachtet werden muss, dass bei SQL die erste Spalte mit 1 statt 0indiziert wird (siehe ResultSet.getString() und getColumnName()).
Außerdem muss beachtet werden, dass zwar mehrere Statementsgleichzeitig geöffnet sein können, aber innerhalb eines Statements (hier: 'st') zu jedem Zeitpunkt immer nur höchstens ein ResultSet ('rs') offen sein darf.
Das ResultSet muss nach Gebrauch unbedingt geschlossen werden ('rs.close()').
Das geöffnete Statement ('st') muss nicht unbedingt geschlossen werden ('st.close()'), die Entsorgung kann der Java Garbage Collection überlassen werden. Allerdings kann es einen Datenbank-Fehler auf Grund zu vieler geöffneter Cursor geben, wenn viele Statements geöffnet werden, bevor die Garbage Collection die vorherigen schließen konnte.
Für höhere Performance sollte kein ODBC-Treiber, sondern möglichst ein direkter zur Datenbank passender JDBC-Type-4-Treiber verwendet werden.
Der JDBC-Treiber muss entweder in das Verzeichnis %JAVA_HOME%\jre\lib\ext kopiert werden, dann braucht er nicht dem CLASSPATH hinzugefügt werden, oder er wird in ein anderes Verzeichnis kopiert und muss im CLASSPATH eingetragen werden (Pfad plus Dateiname).
Genaueres hierzu finden Sie in java-sql.htm.

Mögliche Beispiele für JDBC-Type-4-Treiber und die Strings sDbDrv und sDbUrl für die Datenbanken MySQL, PostgreSQL und Oracle:

  JDBC-Type-4-Treiber sDbDrv
sDbUrl
MySQL mm.mysql-2.0.2-bin.jar org.gjt.mm.mysql.Driver
jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName
PostgreSQL pgjdbc2.jar org.postgresql.Driver
jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName
Oracle classes12.zip oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL


 

<html>
                                       <body>
                                       
                                       <%@ page import = "java.sql.*" isThreadSafe="false" %>
                                       
                                       <%
                                         String sDbDrv = "org.gjt.mm.mysql.Driver";
                                         String sDbUrl = "jdbc:mysql://localhost:3306/test";
                                         String sUsr   = "";
                                         String sPwd   = "";
                                         String sTable = "TestTabelle";
                                         String sSql   = "";
                                         if( request.getParameterNames().hasMoreElements() == true )
                                         {
                                           sDbDrv = request.getParameter( "prmDbDrv" );
                                           sDbUrl = request.getParameter( "prmDbUrl" );
                                           sUsr   = request.getParameter( "prmUsr" );
                                           sPwd   = request.getParameter( "prmPwd" );
                                           sTable = request.getParameter( "prmTab" );
                                           sSql   = request.getParameter( "prmSql" );
                                           if( null != sTable && 0 <  sTable.length() &&
                                              (null == sSql   || 0 == sSql.length())  )
                                             sSql = "SELECT * FROM " + sTable;
                                         }
                                       %>
                                       
                                       <form method="post"><pre>
                                       Db-Treiber   <input type="text"     name="prmDbDrv" value='<%= sDbDrv %>' size=60><br>
                                       Db-URL       <input type="text"     name="prmDbUrl" value='<%= sDbUrl %>' size=60><br>
                                       Benutzer     <input type="text"     name="prmUsr"   value='<%= sUsr   %>' size=60><br>
                                       Kennwort     <input type="password" name="prmPwd"   value='<%= sPwd   %>' size=60><br>
                                       Tabellenname <input type="text"     name="prmTab"   value='<%= sTable %>' size=60><br>
                                       SQL-Kommando <input type="text"     name="prmSql"   value='<%= sSql   %>' size=60>
                                                    (nach Änderung anderer Parameter muss SQL-Kommando gelöscht werden)<br>
                                                    <input type="submit" name="submit" value="Datenbanktabelle anzeigen">
                                       </pre></form>
                                       
                                       <%
                                         if( request.getParameterNames().hasMoreElements() == true
                                             && null != sDbDrv && 0 < sDbDrv.length()
                                             && null != sDbUrl && 0 < sDbUrl.length()
                                             && null != sSql   && 0 < sSql.length() )
                                         {
                                           Class.forName( sDbDrv );
                                           Connection cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
                                           java.sql.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();
                                         }
                                       %>
                                       
                                       </body>
                                       </html>
                                       
 

 

DIPLOMARBEITEN UND BÜCHER

Diplomarbeiten zum Runterladen:

Suche im Katalog:
Architektur / Raumplanung
Betriebswirtschaft - Funktional
Erziehungswissenschaften
Geowissenschaften
Geschichtswissenschaften
Informatik
Kulturwissenschaften
Medien- und Kommunikationswissenschaften
Medizin
Psychologie
Physik
Rechtswissenschaft
Soziale Arbeit
Sozialwissenschaften


JOBS
HOME | E-LEARNING | SITEMAP | LOGIN AUTOREN | SUPPORT | FAQ | KONTAKT | IMPRESSUM
Virtual University in: Italiano - Français - English - Español
VirtualUniversity, WEB-SET Interactive GmbH, www.web-set.com, 6301 Zug

Partner:   Seminare7.de - PCopen.de - HTMLopen.de - WEB-SET.com - YesMMS.com - Ausbildung24.ch - Manager24.ch - Job und Karriere