java jdbc Datenbankanbindung oracle

rical

Grünschnabel
Hallo,

ich möchte per jdbc Treiber auf eine oracle DB zugreifen und bekomme folgende

Fehlermeldung:
Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
        at oracle.jdbc.driver.T4C8TTIdty.marshal(T4C8TTIdty.java:465)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:329)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:490)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:202)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:474)

Mein Connection String sieht so aus:
Code:
DriverManager.getConnection("jdbc:oracle:thin:user/passwort@192.XXX.XXX.XX:1521:PRIM");

Ich habe JDK 1.6 und das ojdbc6.jar file eingefügt.
Was mache ich falsch? Kann es an den Rechten von user liegen(read only)?

Hinweis: Per Oracle Client kann ich auf die DB zugreifen.

Gruß rical
 
Hallo,
ich habe nun mit einer DataSource versucht und bekomm folgenden Fehler:
Code:
SCHWERWIEGEND: null
java.sql.SQLRecoverableException: I/O Exception:The Network Adapter could not establish the connection
        at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:101)
        at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:229)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:458)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:411)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:490)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:202)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:474)
        at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:275)
        at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:206)

Hier ist mein Code für die DataSource:
Code:
            user = "user";
            password = "password";

            OracleDataSource ds = new OracleDataSource();
            ds.setURL("jdbc:oracle:thin:@//192.xxx.xxx.xx:1521:PRIM");
            ds.setPortNumber(1521);
            ds.setNetworkProtocol("TCP");
            ds.setDriverType("thin");
            ds.setDatabaseName("PRIM");

            conn = ds.getConnection(user, password);

Ist das so richtig?
Gruß rical
 
Hi zeja,

Zu eins:
Die Lösung auf deine Frage sollte wie follgt aussehen.
jdbc:oracle:thin:@192.XXX.XXX.XX:1521:user/passwort:PRIM

Zu zwei:

Dir Fehlt meiner meinung nach der DB Treiber.
"oracle.jdbc.driver.OracleDriver"
Tipp Das könntest du dann auch in ein DS File auslagern da ist es besser zu Pflegen

Grüße JonDow
 
Zuletzt bearbeitet:
Hallo,
deine Variante für 1. funktioniert leider nicht. Da kommt eine Fehlermeldung, dass er das Format "host:port:sid" haben möchte.
Ich habe es mit
Code:
ds.setURL("jdbc:oracle:thin:user/password@192.xxx.xxx.xx:1521:PRIM");
probiert und da kommt folgende Fehlermeldung:
Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
        at oracle.jdbc.driver.T4C8TTIdty.marshal(T4C8TTIdty.java:465)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:329)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:490)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:202)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:474)
        at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:275)
        at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:206)
        at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:156)

Zu 2. ich dachte bei einer DataSource muss man den Treiber nicht erst registrieren.

Gruß rical
 
Hallo,
danke für den link. Ich habe sämtliche Beispiele pobiert und es kommt immer noch der selbe Fehler:
Code:
java.sql.SQLRecoverableException: I/O Exception: The Network Adapter could not establish the connection
Kann es sein, dass es nicht am code selber liegt sondern an der oracle DB?
Ich kann per Client aud die DB zugreifen. Ist es vielleicht notwendig Einstellungen an der DB/ am Server zu ändern?

Gruß rical
 
Zurück