Problem mit ausgabe einer Datenbank!

r4d1um

Mitglied
Hallo Leute,

Sitze gerade vor einem Problem! Ich möchte gerne ein Java Programm in eine JSP seite einbauen, dass Java Programm bezieht sich informationen aus einer Oracle Datenbank und gibt diese dann in der Konsole aus, nun möchte ich aber dieses in einer JSP seite gestalten. Mir fehlt nur leider jegliche idee wie ich dies anstellen soll! Kann mir bitte jemand weiterhelfen

Gruß

r4d1um

Mein JSP qtext sieht mommentan so aus!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@ page language="java" %>

HTML:
<html>

<head>
<title>Datenbank</title>
</head>
<body>
<h2>Datenbank</h2>

<div class="DB">
    <%=mitarbeiter.DB()%>
 
</div>
</body>
</html>

und mein java qtext

Code:
package arbeiter;
import java.sql.*;
import java.sql.DriverManager;
import java.lang.StringBuffer;



public class DB 
{
    public static void main(String[] args) 
    {
        // Diese Eintraege werden zum
        // Verbindungsaufbau benötigt.
        final String hostname = "muster";
        final String port = "521";
        final String dbname = "mustername";
        final String user = "muster";
        final String password = "passwort";
        
           
        Connection c = null;
        Statement s = null;
        ResultSet r = null;

        try 
        {
        	System.out.println("* Treiber laden");
      	    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
        } 
        catch (Exception e) 
        {
        	System.err.println("Unable to load driver.");
        	e.printStackTrace();
        } 
        try 
        {
        	System.out.println("* Verbindung aufbauen");
        	String url = "jdbc:oracle:thin:@"+hostname+":"+port+"/"+dbname;
        	c = DriverManager.getConnection(url, user, password);
	    
        	s = c.createStatement();
	    
        	r = s.executeQuery("SELECT VORNAME, NAME, NAMENSKUERZEL FROM mitarbeiter");
	    
        	while (r.next()) 
        	{	  
        		System.out.println(r.getString("VORNAME") + "			"
        	    + r.getString("NAME") + "			" + r.getString("NAMENSKUERZEL")+"<br>");
			
        			}        	
       }             
        catch (SQLException sqle) {
        System.out.println("SQLException: " + sqle.getMessage());
        System.out.println("SQLState: " + sqle.getSQLState());
        System.out.println("VendorError: " + sqle.getErrorCode());
        sqle.printStackTrace();
     } 
        
        
        finally {
	   	    if (r != null) { 
	        System.out.println("* ResultSet wird gelöscht");
	        try
	        {
	        	r.close();
	        }
	        catch(SQLException e)
	        {
	        	System.out.println("Fehler beim Löschen des ResultSet");
	        }
	    } else { 
	        System.out.println("ResultSET berreit gelöscht");
	    } 
	}
        
        {
	   	    if (s != null) { 
	        System.out.println("* Statement löschen");
	        try
	        {
	        	s.close();
	        }
	        catch(SQLException e)
	        {
	        	System.out.println("Fehler beim löschen des Statements");
	        }
	    } else { 
	        System.out.println("Statement berreits gelöscht!");
	    } 
	}
        
        
          {
    	   	    if (c != null) { 
    	        System.out.println("* Datenbank-Verbindung wird beendet");
    	        try
    	        {
    	        	c.close();
    	        }
    	        catch(SQLException e)
    	        {
    	        	System.out.println("Fehler beim Schliessen der Connection");
    	        }
    	    } else { 
    	        System.out.println("Datenbank-Verbindung beendet");
    	    } 
    	}
        
        
        
        
}
}
 
Hat sich erledigt habs selbst hinbekommen!

HTML:
<html>
<body>
<head><link rel="shortcut icon" href="tomcat.ico" type="image/x-icon"></head>

<%@ page import="java.sql.*" isThreadSafe="false" %>

<%
   {
    out.println( "SELECT name, vorname, namenskuerzel FROM mitarbeiter" + "<br><br>" );
    Connection cn = null;
    Statement  st = null;
    ResultSet  rs = null;
    try {
      Class.forName( "oracle.jdbc.driver.OracleDriver" );
      cn = DriverManager.getConnection( "jdbc:oracle:thin:@ip or url:port/database" , "username" , "password" );
      st = cn.createStatement();
      rs = st.executeQuery( "SELECT name, vorname, namenskuerzel FROM mitarbeiter" );
      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>" );
    } finally {
      try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
      try { if( null != st ) st.close(); } catch( Exception ex ) {}
      try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
    }
  }
%>


</body>
</html>
 
Prinzipiell kannst du es schon so machen wie du es beschreibst, aber es ist natürlich sehr unschön wenn der ganze Java-Code in der JSP-Datei steht. Ich würde dir folgendes empfehlen:

Du erstellst dir ein Bean (ganz normale Java-Klasse mit privaten Attributen und getter/setter-Methoden).
Dann schiebst du den ganzen Code in ein Servlet, das die Daten von der Datenbank ausliest und das Bean befüllt.
Anschließend das Bean an die Session oder den Request-Skope hängen und an eine JSP weiterleiten.
In der JSP kannst du dann z.B. über die Expression-Language das Bean auslesen und die Ergebnisse präsentieren.
 

Neue Beiträge

Zurück