Oracle Verbindung mit Java zu Datenbank

  • Themenstarter Themenstarter Damasus
  • Beginndatum Beginndatum
D

Damasus

Gast
Zunächste wünsch ich jedem einen schönen guten Nachmittag,
das folgende Problem kommt anscheinend öfters vor, aber ich bin aus all den Einträgen nicht schlau geworden. Ich möchte (wie viele hier) eine Datenbankverbindung herstellen. Ich benutze das Oracle Database 10g Express (also die kostenlose Variante). Mein Quelltext sieht wie folgt aus:
Java:
 import java.sql.*;
import java.util.*;

public class datenbank001 {
    static String url = "jdbc:oracle:thin:@127.0.0.1:8:USER_TEST";
    static String userid = "xxx";
    static String password = "yyy";
  
    static Connection con = null;
    public static void main(String[] args) throws Exception {
        Connection con = getOracleJDBCConnection();
        if(con!= null){
           System.out.println("Got Connection.");
           DatabaseMetaData meta = con.getMetaData();
           System.out.println("Driver Name : "+meta.getDriverName());
           System.out.println("Driver Version : "+meta.getDriverVersion());

        }else{
            System.out.println("Could not Get Connection");
        }
    }

    public static Connection getOracleJDBCConnection(){

        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            System.out.println("=================================================");
            System.out.println("Vorhandene Treiber:");
                    
            for(Enumeration<Driver> e=DriverManager.getDrivers(); e.hasMoreElements(); )
                System.out.println(e.nextElement().getClass().getName());
                    
            System.out.println("=================================================");

        } catch(java.lang.ClassNotFoundException e) {
            System.err.print("ClassNotFoundException: ");
            System.err.println(e.getMessage());
        }

        try {
           con = DriverManager.getConnection(url, userid, password);
        } catch(SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }

        return con;
    }

}
Ich habe folgende .JAR's eingebunden: orai18n.jar, ojdbc14dms.jar, ojdbc14_g.jar, ojdbc14.jar.
Als Fehlermeldung kommt
Java:
=================================================
Vorhandene Treiber:
sun.jdbc.odbc.JdbcOdbcDriver
=================================================
Could not Get Connection
SQLException: No suitable driver found for jdbc:oracle:thin:@127.0.0.1:8:USER_TEST
Ich habe schon zahlreiche Dinge gestestet und zahlreiche Foren durchforstet, aber es läuft einfach nicht und bin seit 11 Uhr am forschen. Java programmiere ich schon länger, habe aber erst seit Tagen, eher Stunden Erfahrungen mit Datenbankverbindungen.

Wäre toll wenn ihr mir etwas weiter helfen könntet.

Grüße
 
Die Oracle Treiberklasse heisst: oracle.jdbc.driver.OracleDriver
Die
Code:
sun.jdbc.odbc.JdbcOdbcDriver
kann man verwenden um via ODBC auf die Datenbank zu zugreifen - ist aber nicht für Produktivsysteme geeignet.
 
Java:
=================================================
Vorhandene Treiber:
sun.jdbc.odbc.JdbcOdbcDriver
oracle.jdbc.driver.OracleDriver
=================================================
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/dms/instrument/ExecutionContextForJDBC
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:322)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:151)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:608)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at datenbank001.getOracleJDBCConnection(datenbank001.java:42)
    at datenbank001.main(datenbank001.java:12)
Caused by: java.lang.ClassNotFoundException: oracle.dms.instrument.ExecutionContextForJDBC
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 8 more
macht das das Problem besser?
Hab die ensprechende Zeile angepasst
 
Na immerhin findet er die Treiberklasse ;-)

Was den Rest angeht kann ich nicht viel dazu sagen, in meinem Oracle Paket, sind die im Stacktrace aufgeführten Klassen PhysicalConnection, T4... nicht enthalten.

Ich nutze hier das volle Oracle 10g - keine Ahnung ob es da einen Unterschied zum Express gibt.
 
Trotzdem danke für die Hilfe. Hab noch einiges probiert, aber ich hoffe einfach, dass jemand den gewissen Fehler findet.
 
Java:
=================================================
Vorhandene Treiber:
sun.jdbc.odbc.JdbcOdbcDriver
oracle.jdbc.driver.OracleDriver
=================================================
Could not Get Connection
SQLException: E/A-Exception: Got minus one from a read call
es tut sich was^^
 
Ich möchte noch ergänzen, dass bevor die Fehlermeldung auftaucht, erstmal ca. 5-6 Sekunden vergehen. Falls das weiterhilft. Nichts deto trotz läuft es leider immer noch nicht.
 
Problem gelöst JUHUUUUUUUU
folgende Zeile war falsch
Vorher:
Java:
   static String url = "jdbc:oracle:thin:@127.0.0.1:8080:USER_TEST";
Danach
Java:
    static String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
 

Neue Themen


Zurück
Oben