# Connection zu einer Oracle DB erstellen



## Guest (6. Aug 2007)

Servus zusammn

ich habe ein kleines Problem, bei welchem Ihr mir sicher weiterhelfen könnt! Ich wollte eine Verbindung zu einer Oracle DB erstellen, mein Code sieht wie folgt aus:


```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBManagement {
	
	private static Connection connection = null; //Verbindung zur Datenbank
		
public static void initDBConnection(){
		
		String url ="jdbc:oracle:oci8:@bo04"; //URL zur Datenbank
		String username = "MX_DM_TEST"; //Nutzername
		String password = "xm02"; //Passwort
				
		// Holen des SQL-Treibers
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		}
		catch(ClassNotFoundException e1) {
			e1.printStackTrace();
			System.exit(1);
		}
		//Erstellung einer Verbindung zur Datenbank
		try {
			connection = DriverManager.getConnection(url, username, password);
				
		}catch (SQLException e) {
			e.printStackTrace();
		}
	}

public void ConnectionClose(){
	try {
		connection.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

public static Connection getConnection() {
	return connection;
}

public static void setConnection(Connection connection) {
	DBManagement.connection = connection;
}
}
```

Der Fehler den ich erhalte folgender massen:

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
	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)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at DBManagement.initDBConnection(DBManagement.java:20)
	at StartTesting.ablauf(StartTesting.java:30)
	at BuildGUI$1.actionPerformed(BuildGUI.java:52)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


Ich habe zusätzlich noch ein *.JAR File von der Oracle Webseite mit Treibern herunter geladen. Kann mir jemand bei meinem Problem helfen? 
Oder habe ich eventuell die falschen *.Jars?

Besten Dank...

Java Rules...


----------



## SlaterB (6. Aug 2007)

was hast du denn mit diesem *.jar gemacht?
weißt du über CLASSPATH bescheid?


----------



## Guest (6. Aug 2007)

Ich habe das *.jar in mein Projekt hauptverzeichnis in Eclipse importiert. Ich hoffe das war richtig so? 
Betreffend classpath...mmmhhh...das ist doch der Pfad den ich angebe wo mein Java liegt, nicht?


----------



## SlaterB (6. Aug 2007)

> das ist doch der Pfad den ich angebe wo mein Java liegt, nicht?
eher nicht, vor allem für solche Libs

> 'in Eclipse importiert'
heißt das
Project, Properties, Java Build Path, Libraries, Add External Jar?

du müsstest
OracleDriver d = null;
oder ähnliches schreiben können und einen passenden import finden,
das scheint mir immer ein guter Test zu sein, ob der Import klappt
(aber nur theoretisch in solchen Threads, habe ich selber noch nie gemacht  )


----------



## Guest (7. Aug 2007)

> 'in Eclipse importiert' 
>heißt das 
>Project, Properties, Java Build Path, Libraries, Add External Jar? 

Ich habe es vorher einfach über den Import Knopf importiert, dass war anscheinend ziemlich falsch. Ich habe nun den Import über Project, Properties, Java Build Path, Libraries, Add External Jar vorgenommen, allerdings erhalte ich nun eine seltsame Fehlermeldung. Habe ich unter Umständen die falsche Version erwischt? 
Hier meine Errormeldung:

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no ocijdbc10 in java.library.path
	at java.lang.ClassLoader.loadLibrary(Unknown Source)
	at java.lang.Runtime.loadLibrary0(Unknown Source)
	at java.lang.System.loadLibrary(Unknown Source)
	at oracle.jdbc.driver.T2CConnection$1.run(T2CConnection.java:3139)
	at java.security.AccessController.doPrivileged(Native Method)
	at oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java:3135)
	at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:221)
	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
	at oracle.jdbc.driver.T2CConnection.<init>(T2CConnection.java:132)
	at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:78)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at DBManagement.initDBConnection(DBManagement.java:25)
	at StartTesting.ablauf(StartTesting.java:30)
	at BuildGUI$1.actionPerformed(BuildGUI.java:52)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


----------



## SlaterB (7. Aug 2007)

dazu weiß ich persönlich nix,
kann auch die vielen google-Ergebnisse dann nicht analysieren,

wenn du Lust hast, dann schaue sie dir selber an:
http://www.google.de/search?hl=de&q...in+java.library.path+&btnG=Google-Suche&meta=


----------



## tuxedo (7. Aug 2007)

Da fehlt noch die Angabe einer DLL namens "ocijdbc10 " im java.library.path ...


----------



## abollm (7. Aug 2007)

Anonymous hat gesagt.:
			
		

> Servus zusammn
> 
> ich habe ein kleines Problem, bei welchem Ihr mir sicher weiterhelfen könnt! Ich wollte eine Verbindung zu einer Oracle DB erstellen, mein Code sieht wie folgt aus:
> 
> ...



Ein paar Fragen:

Warum hast du dir von der Oracle-Website einige Treiber heruntergeladen, hast du keinen Oracle-Client bzw. keine Oracle-Server-Installtion mit allen notwendigen Treiber-Dateien?

Wenn nein, dann die Frage, warum du den OCI-Treiberaufruf verwendet hast? Der Thin-Driver ist rein in Java geschrieben und benötigt keine nativen DLLs oder sonst etwas im Vergleich zum OCI-Treiber.

Hier mal ein kleines Testprogramm, mit dem du überprüfen kannst, ob deine JDBC-Konfiguration zur Oracle-DB korrekt ist.


```
package ora;

/*
 * This sample can be used to check the JDBC installation. Just run it and
 * provide the connect information. It will select "Hello World" from the
 * database.
 */
// You need to import the java.sql package to use JDBC
import java.sql.*;
// We import java.io to be able to read from the command line
import java.io.*;

class JDBCCheckup {
public static void main(String args[])
throws SQLException, IOException
{
// Load the Oracle JDBC driver
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// Prompt the user for connect information
System.out.println("Please enter information to test connection to the database");
String user;
String password;
String database;
user = readEntry("user: ");
int slash_index = user.indexOf('/');
if (slash_index != -1)
{
password = user.substring(slash_index + 1);
user = user.substring(0, slash_index);
}
else
password = readEntry("password: ");
database = readEntry("database(a TNSNAME entry): ");
System.out.print("Connecting to the database...");
System.out.flush();
System.out.println("Connecting...");
Connection conn = DriverManager.getConnection
("jdbc:oracle:oci:@" + database, user, password);
System.out.println("connected.");
// Create a statement
Statement stmt = conn.createStatement();
// Do the SQL "Hello World" thing
ResultSet rset = stmt.executeQuery("select 'Hello World' from dual");
while (rset.next())
System.out.println(rset.getString(1));
// close the result set, the statement and connect
rset.close();
stmt.close();
conn.close();
System.out.println("Your JDBC installation is correct.");
}
	// Utility function to read a line from standard input
	static String readEntry(String prompt) {
		try {
			StringBuffer buffer = new StringBuffer();
			System.out.print(prompt);
			System.out.flush();
			int c = System.in.read();
			while (c != '\n' && c != -1) {
				buffer.append((char) c);
				c = System.in.read();
			}
			return buffer.toString().trim();
		} catch (IOException e) {
			return "";
		}
	}

}
```

Hth


----------



## abollm (7. Aug 2007)

Noch etwas, anstatt

```
[..]

		String url ="jdbc:oracle:oci8:@bo04"; //URL zur Datenbank
```
schreib mal

```
[..]

		String url ="jdbc:oracle:oci:@bo04"; //URL zur Datenbank
```


----------

