Datenbankanbindung mit JDBC

conVerge

Grünschnabel
Hallo zusammen!

Ich habe ein kleines Problem und hoffe ihr könnt mir helfen. Ich will mit JDBC eine Datenbank anprechen, das alles soll unter Tomcat geschehen. Leider komme ich absolut nicht weiter da ich mich mit JDBC nicht auskenne, Java kenntnisse besitze ich und der Tomcat Server läuft auch ohne Probleme.
Ich versuche vergeblich eine vernünftige und leicht verständliche Anleitung zu finden, die sich mit grundlegenden Dingen beschäftigt. Ich muss z.B. wissen wo/wie denn jetzt die JDBC Treiber mit Tomcat verbunden werden und wie ein einfaches Beispiel zum auslesen einer Datenbank aussieht. Könnt ihr mir da helfen?

Danke schonmal!

Gruss Kai
 
Hallo!

Das Ganze ist eigentlich recht einfach.
In meinem Beispiel verwende ich eine Oracle 9.2 Datenbank deren Instanz auf orcl registriert ist. Weiterhin habe ich einen Tomcat in der Version 5.0.29 und ich verwende den Datenbank Treiber aus dem der Oracle Datenbank beiliegendem ojdbc14.jar: (oracle.jdbc.driver.OracleDriver)

Kopiere die Jar- Datei welche deinen Datenbank Treiber enthält in das
common\lib
deiner Tomcat Installation.

Danach startest du den Tomcat und richtest mittels der Tomcat Manager Application eine Datenquelle ein. (Solltest du keinen Zugang zur Manager Applikation haben öffnest du einfach die tomcat-users.xml im /conf Verzeichnis und legst einen Benutzer an der die Rollen tomcat,admin,manager besitzt und speicherst die datei ab.)
Dadurch wird im Verzeichnis conf/catalina/localhost eine Datei Namens MeineWebApp.xml mit ähnlichen Inhalt angelegt:
(Meine Web App ist unter /asw registriert und enthät folgende Einstellungen zur Datenquelle in der Datei asw.xml)
Code:
<?xml version='1.0' encoding='utf-8'?>
<Context displayName="Avis" docBase="asw" path="/asw" workDir="work\Catalina\localhost\asw">
  <Resource auth="Application" description="AVIS DB Connection" name="avisDB" type="javax.sql.DataSource"/>
  <ResourceParams name="avisDB">
      <parameter>
        <name>maxWait</name>
        <value>5000</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>10</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>avis</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:oracle:thin:@localhost:1521:orcl</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>oracle.jdbc.driver.OracleDriver</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>3</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>avis</value>
      </parameter>
    </ResourceParams>
</Context>

Mit Resource Name (avisDB) lege ich dann fest unter welchem Namen ich die Datenquelle im Tomcat finden kann.

Verwenden kann ich die Datenquelle dann wie folgt:

Code:
   public static Connection getConnection() throws SQLException {
        DataSource ds = null;

        try {
            Context ctx = new InitialContext();
            Context envContext = (Context) ctx.lookup("java:/comp/env");
            ds = (DataSource) envContext.lookup("avisDB");

        } catch (NamingException e) {
            e.printStackTrace();
        }

        Connection con = ds.getConnection();
        con.setAutoCommit(false);
        return con;
    }

Mit diesem Code-Fragment bekomme ich eine Verbindung aus dem vom Tomcat Gemanagedten Datanbank Connection Pool.

Wie du dann mit JDBC zu arbeiten hast kannst du den Java API Doc's entnehmen.

Siehe:
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html
http://java.sun.com/products/jdbc/faq.html
http://java.sun.com/developer/onlineTraining/Database/JDBCShortCourse/

Gruß Tom
 
Hallo,

danke ersteinmal für die schnelle Antwort. Leider komme ich damit nicht so recht weiter...:(
Ich bräuchte eine Schritt für Schritt Anleitung, da ich auf diesem Gebiet absolut keine Ahnung habe, auf Hilfeseiten im Internet finde ich meistens Anleitungen die ein gewissen Vorwissen voraussetzen. Ich müsste z.B. wissen was ich genau für dateien brauche (z.B. die JDBC Treiber) und wie ich diese in Tomcat einbinde. Hoffe da kann mir jemand helfen.

Gruss Kai
 
das kommt auf die datenbank an auf welche du dich verbinden willst. dann musst du mal nach JDBC driver {datenbank} suchen. das jar oder bei oracle das zip musst du dann in dein lib verzeichnis der webapplikation mit einbinden.
 
Hi,

soweit bin ich schon gekommen ;-)
Mein Problem ist einfach das ich nicht weiss wie ich jetzt auf eine Datenbank zugreifen kann. Ich bräuchte nur die grundlegenden Dinge die ich machen muss, sozusagen das Grundgerüst. Ich würde das alles gerne mit hsqldb realisieren.

Gruss Kai
 
ahhh, alles klar. Du musst diese Treiberklasse in der Connection registrieren. Guckst du hier:

Code:
Class.forName( "org.hsqldb.jdbcDriver" );
cn = DriverManager.getConnection( "jdbc:hsqldb:C:/hSqlDbData/myDB", "sa", sPwd );

Danach ist das ganze folgendermaßen zu verwenden:

Code:
Statement  st = cn.createStatement();
ResultSet  rs = st.executeQuery( "select * from " + sTable );

Ich hoffe so hilft es weiter.

Das ganze Beispiel ist unter dieser URL nachzulesen.
 
Zurück