Anfänger: Verbindung zu OracleDB

Status
Nicht offen für weitere Antworten.

Evolver

Bekanntes Mitglied
Ich habe bislang noch nichts mit JDBC gemacht und muss mich nun zu einer Oracle-Datenbank verbinden. Leider kommt hinzu, dass ich von OracleDatenbanken auch nicht viel Ahnung habe, leider nur von MySQL. Kann mir jemand erklären, wie man das richtig macht? Mein Versuch sieht bislang so aus:
Code:
class Oracle
{
	public static void main(String pArg[])
	{
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		}
		catch(ClassNotFoundException pExc) {
			System.out.println("ERR: Datenbanktreiber nicht gefunden.");
			//return;
		}
		
		Connection tConDB = null;
		try {
			tConDB = DriverManager.getConnection("jdbc:oracle:thin:@localhoft:8080:oracl10", "**1**", "**2**");
			Statement tState = tConDB.createStatement();
			ResultSet tResult = tState.executeQuery("select * from EMPLOYEES");
			if(tResult.next()) {
				System.out.println(tResult.getString("LAST_NAME") + ", " + tResult.getString("FIRST_NAME"));
			}
			else System.out.println("-> Leeres Ergebnis.");
		}
		catch(SQLException pExc) {
			System.out.println("ERR: Fehler bei der Datenbankverbindung.");
		}
		
		if(tConDB!=null)
			try {
				tConDB.close();
			}
			catch(SQLException pExc) {
				System.out.println("ERR: Datanbankverbindung konnte nicht geschlossen werden.");
			} 
	}
}

Nun gibt es viel Unklarheiten, da es so nicht funktioniert.

1. Was muss ich in Zeile 6 tatsächlich angeben? So erhalte ich nur die entsprechenden Exception.

2. Was muss ich in Zeile 15 übergeben? Der Erste Parameter sollte ja die Datenbank darstellen, die bei mir auf dem localhost auf Port 8080 läuft. Wie lautet dafür der erste Parameter korrekt? Der zweite Parameter ist der Username, der dritte das Passwort, richtig?

3.Wenn ich mich mit dem OracleAdmintool beschäftige, sehe ich nur die Verwaltung von Benutzern, aber nirgens Datenbanknamen. Ist es so, dass zu jedem Benutzername genau eine Datenbank gehört, die also deswegen keinen eigenen Namen besitzt?
 

M.L.

Top Contributor
Also der geneigte Leser sollte schon erfahren, welche Oracle Datenbank zum Einsatz kommt ;-) Aktuell wäre 10g Release 2.
Desweiteren kann man sich unter der Seite des Oracle Technical Networks mal umschauen: http://www.oracle.com/technology/sample_code/tech/java/sqlj_jdbc/index.html
Ansonsten funktioniert die Anbindung an Oracle fast genau wie mit MySQL, nur mit anderen Treibern und Einstellungen. Es sei denn, man verwendet gleich den JDeveloper von Oracle...
 

Evolver

Bekanntes Mitglied
Ja, es ist die 10g Express Edition. Der Link ist ja sehr umfangreich, mal sehen ob ich da die benötigten Informationen herausfiltern kann. Kann man die Sache auch versionsunabhängig gestallten? Da es wahrscheinlich ist, dass mein Programm auch auf Rechnern mit einer anderen Oracle-Version laufen muss.
 
G

Guest

Gast
Wird das eine Multi-User-Webanwendung oder einen Single-User-Desktop-Anwendung? Im ersten Fall empfehle ich auf DataSources statt des Class.forName(..) Gedöns zurück zu greifen.
 

Evolver

Bekanntes Mitglied
Sorry, ich komme nicht klar, ich finde nicht ide Informationen, die ich brauche.

In nem Beispiel von der Seite steht:
Code:
import oracle.jdbc.driver.OracleConnection;
import oracle.jdbc.pool.OracleDataSource;
Das läuft bei mir schonmal nicht, weil der 'oracle-Import' nicht vorhanden ist. Wo bekomme ich das her?

Ich habe immernoch nicht herausgefunden, was ich im obigen Code in Zeile 6 eintragen muss.

Für Zeile 15 habe ich gefunden:
Code:
DriverManager.getConnection("jdbc:oracle:thin:@<mc-name>:<port-no>:<sid>", "<user>", "<password>");
Ich denke mal:
<mc-name> = localhost
<port-no> = 8080
<user> und <password> sind klar
<sid> = "SessionID"? Was ist das, was muss da hin?
 

kama

Top Contributor
Hallo,

falls das wie Du geschrieben hast eine Oracle Express Edition ist, dann muss:

Code:
tConDB = DriverManager.getConnection("jdbc:oracle:thin:@localhoft:8080:oracl10", "**1**", "**2**");

ungefär so aussehen:

Code:
tConDB = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "**1**", "**2**");
Username und Passwort musst du entsprechend der Konfiguration angeben.

Hast Du Zugriff per http://localhost:8080/apex ?

Die Zeile 6 sieht gut aus....

EDIT: Den richtigen Treiber musst Du natürlich auch haben... (ojdbc....jar).
MfG
Karl Heinz Marbaise
 

Caffè Latte

Bekanntes Mitglied
Hi,

bei der XE-Version ist IMHO nur der Thin-Treiber dabei; zu finden unter [ORACLE_HOME]/jdbc/lib. Dort findest du zwei JARs, nämlich ojdbc14.jar und ojdbc14_g.jar (für Tracinginformationen).

Da ich nicht weiß mit welcher Entwicklungsumgebung du arbeitest geb ich dir halt den allgemeinen Tip, für dein Projekt ein lib-Verzeichnis zu erstellen und ojdbc14.jar dorthin zu kopieren. Beim Starten der Anwendung muss dieses lib-Verzeichnis dann in den Classpath.

Die SID ist nur sowas wie eine Umgebungsvariable, um auf die Instanz und darüber auf die Datenbank zugreifen zu können.Die SID wird an keiner Stelle in der Datenbank gespeichert. Sie wird beim Starten der Instanz benötigt und dient zum Auslesen der dazugehörigen init.ora bzw. des spfile.Über die ORACLE_SID wird das allokierte Shared Memory (SGA) benannt und adressiert. Da die SID nicht in der Datenbank gespeichert wird, kann diese jederzeit durch Umsetzen der Umgebungsvariable und Anpassung des Namens der init.ora/des spfile geändert werden.

Wenn du die Installationsroutine nur einfach durchgeklickt hast, dann ist die SID bei dir aller Wahrscheinlichkeit nach "XE".

Hoffe es hilft ...
 

Evolver

Bekanntes Mitglied
Da ich nicht weiß mit welcher Entwicklungsumgebung du arbeitest geb ich dir halt den allgemeinen Tip, für dein Projekt ein lib-Verzeichnis zu erstellen und ojdbc14.jar dorthin zu kopieren. Beim Starten der Anwendung muss dieses lib-Verzeichnis dann in den Classpath.

Ich benutze Eclipse. In welches Verzeichnis muss ich die beide Dateien kopieren?
Wenn ich es mit dem lib-Verzeichnis mache habe ich noch in Problem mit dem Classpath. Also ich habe meinem Projekt ein "lib"-Verzeichnis hinzugefügt, die Dateien dorthin kopiert. Dass habe ich in der Datei .classpath (die ja auch von Eclipse erzeugt wird) folgendes hinzugefügt:
Code:
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="lib"/>   // neu
Das het leider nichts gebracht. DIe entsprechenden Imports sind immernoch unresolved. Wie mache ich es richtig?


PS: Sorry für die ganzen DAU-Fragen, ich steh zur Zeit echt auf'm Schlauch.
 

Evolver

Bekanntes Mitglied
Danke, das funktioniert jetzt schonmal. Aber die Aufnahme einer Verbindung funktioniert leider nicht. Sie wirft folgende Exception:
java.sql.SQLException: E/A-Exception: Got minus one from a read call

Meine Zeile 15 (die die Exception wirft) sieht wie folgt aus:
tConDB = DriverManager.getConnection("jdbc:eek:racle:thin:mad:localhost:8080:XE", "HR", "xyz");

Um die Informationen zusammen zu fassen:
- Ja, meine DB ist über 'localhost:8080/apex' zu erreichen.
- Benutzername und Passwort sind richtig.
- In der init.ora steht die Variable db_name=XE, ich schätze mal das ist die oben angesprochene <sid>.

Seht ihr spontan einen Fehler? Könnte es daran liegen, dass meine Datenbank "langsam reagiert"? Wenn ich sie im Browser aufrufe braucht es einige Sekunden, bis ich zum Login komme. Falls das die Fehlerquelle sein könnte, wie kann ich das Timeout manuell verlängern?
 

Caffè Latte

Bekanntes Mitglied
Nochmals hallo,

trag mal in deiner Zeile 15 statt 8080 den Port 1521 ein (bzw. den Port, auf den dein Listener lauscht, nachzulesen in [ORACLE_HOME]/network/admin/tnsnames.ora).

Und nein, die SID ist nicht der Datenbankname. Bei der Standardinstallation sind die nur gleich. Auch deine Instanz heißt XE, aber die ist auch wieder was anderes als die Datenbank ... ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
O PL/SQL Anfänger Datenbankprogrammierung 5
dat_vin Der Anfänger und das AbstractTableModel Datenbankprogrammierung 12
E MySQL Hibernate ( Anfänger ) Datenbankprogrammierung 3
N Hibernate-Anfänger Datenbankprogrammierung 14
I Anfänger-Tutorial für Hibernate gesucht Datenbankprogrammierung 3
J Anfänger Fragen zu JPA Datenbankprogrammierung 6
S MySQL EclipseLink Anfänger Datenbankprogrammierung 3
D MySql Tabelle mit MySQLAdministrator (Anfänger) Datenbankprogrammierung 5
L DatenBank Anfänger Datenbankprogrammierung 19
H Dateiverwaltung mit mySQL ( mySQL Anfänger ) Datenbankprogrammierung 4
-horn- [Anfänger] Ein einfaches Beispiel für Abfrage von MxSQL? Datenbankprogrammierung 8
M [Anfänger] Hibernate-Einstieg Datenbankprogrammierung 12
S JDBC-Anfänger und Probleme beim Treiberfinden etc. Datenbankprogrammierung 4
G Anfänger: Welche Datenbank ist sinnvoll? Datenbankprogrammierung 11
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
OnDemand SSL Verbindung zu externer DB Datenbankprogrammierung 5
C MySQL Remote Verbindung zu MariaDB Datenbankprogrammierung 11
M SQL , CSV Verbindung : Zu Umfangreicher Code durch Unwissenheit Datenbankprogrammierung 21
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
Z Beim schließen des Programms die verbindung zur DB beenden. Datenbankprogrammierung 4
Husamoli345 JSF-JDBC Verbindung Crud Datenbankprogrammierung 15
V keine Verbindung möglich (Access-DB) Datenbankprogrammierung 3
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
M Oracle SQLException: Verbindung getrennt Datenbankprogrammierung 2
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
C Verbindung mit SQLExpress Datenbankprogrammierung 9
S E(fx)clipse Verbindung zu MS SQL Express aufbauen Datenbankprogrammierung 7
M H2 Verbindung zur Datenbank komplett schließen Datenbankprogrammierung 11
F MySQL Verbindung zum SQL-Server Datenbankprogrammierung 27
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
C datenbank verbindung config Datenbankprogrammierung 23
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11
J Verbindung aufbauen Datenbankprogrammierung 7
S DB2 Express C - keine Verbindung zur Datenbank Datenbankprogrammierung 2
I Es kann keine Verbindung zum Server aufgebaut werden Datenbankprogrammierung 12
Thallius MySQL Merkwürdiges JDBC Verhalten bei VPN Verbindung. Datenbankprogrammierung 7
P MySQL-Verbindung in anderer Klasse nutzen Datenbankprogrammierung 2
W Keine ODBC-Verbindung zur MSAccess-Datenbank Datenbankprogrammierung 2
S Auslagern der Datenbank Verbindung Datenbankprogrammierung 2
M Verbindung von Java Programm zur Acccess Datenbank (mdb-Datei) Datenbankprogrammierung 0
D NullPointerException bei DB Verbindung Datenbankprogrammierung 6
AssELAss Verbindung i5 Series 7.1 / 7.2 (DB2) mit Oracle SQL Developer Datenbankprogrammierung 3
J Verbindung zu Derby Datenbank funktioniert nicht Datenbankprogrammierung 14
M MySQL Verbindung zum Server aufbauen ohne DB ansprechen Datenbankprogrammierung 2
D Java MS Access Verbindung Datenbankprogrammierung 10
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
A Verbindung mit Access 2007 Datenbank herstellen Datenbankprogrammierung 1
I Datenbank Verbindung geht nicht Datenbankprogrammierung 2
N MySQL com.microsoft.sqlserver.jdbc.SQLServerException: Die Verbindung wurde geschlossen. Datenbankprogrammierung 1
1 MySQL Verbindung mit localhost als IP funktioniert, aber mit normaler IP nicht Datenbankprogrammierung 2
A Nach Export mysql Verbindung zur Datenbank nicht möglich, was tun? Datenbankprogrammierung 7
Helgon H2 Verbindung öffnen/schließen - Dauer, wann, wie lange? Datenbankprogrammierung 2
J Verbindung zu Access Datenbank Datenbankprogrammierung 15
J Verbindung zu Datenbank herstellen Datenbankprogrammierung 26
P MySQL Verbindung nach außen sehr langsam Datenbankprogrammierung 4
P JDBC Verbindung zur DB klappt nicht Datenbankprogrammierung 6
J Java - JDBC Verbindung zur Datenbank nicht möglich Datenbankprogrammierung 10
T MySQL Sichere Verbindung Datenbankprogrammierung 6
T MySQL Kann Verbindung zur MySQL Datenbank nicht herstellen. Datenbankprogrammierung 4
S Google Web Toolkit LDAP - Verbindung Datenbankprogrammierung 2
pg1337 Verbindung mit postgres - eclipse Datenbankprogrammierung 4
M Verbindung mit MSSQL hängt! Datenbankprogrammierung 2
cover1012 Derby/JavaDB Verbindung mit FTP-Server Datenbankprogrammierung 13
T NullPointerException bei Verbindung zur Datenbank Datenbankprogrammierung 4
J DB2 Verbindung zu AS400 Datenbankprogrammierung 6
F PostgreSQL JPA und Hibernate - Verbindung zur DB Datenbankprogrammierung 7
J MySQL Verbindung über JDBC scheitert immer Datenbankprogrammierung 2
M MySQL getConnection - Verbindung Problem Datenbankprogrammierung 2
T mdb Verbindung ohne Registrierung der Datenquelle im OS Datenbankprogrammierung 14
K MySQL Verbindung funktioniert in Netbeans aber .jar funktioniert nicht Datenbankprogrammierung 5
jeppi MySQL Design-Problem: DB-Verbindung herstellen und halten - JdbcRowSet / Idle-Timeout? Datenbankprogrammierung 9
S Hibernate in Verbindung mit Hsql Datenbankprogrammierung 2
D Oracle Verbindung mit Java zu Datenbank Datenbankprogrammierung 8
F MSSQL-Server Verbindung Datenbankprogrammierung 5
E Hibernate Problem bei bidirektionaler 1:n Verbindung Datenbankprogrammierung 2
DStrohma MS SQL Server 2005 + Java: Immer nur eine aktive Verbindung erlaubt? Datenbankprogrammierung 5
G MySQL Tables 1:1 verbindung Datenbankprogrammierung 14
B JDBC Verbindung mit Postgresql Datenbankprogrammierung 13
U MSSQL Verbindung steht, aber meckert beim Statement Datenbankprogrammierung 2
G JDBC-Verbindung: User wechseln Datenbankprogrammierung 2
F Kann keine Verbindung mit HSQLDB aufbauen Datenbankprogrammierung 2
N Trennt sich die Verbindung zur DB (MySQL) automatisch? Datenbankprogrammierung 3
X JDBC Verbindung in einer Funktion Datenbankprogrammierung 9
O HSQLDB Verbindung schlägt fehl Datenbankprogrammierung 3
C DB2/AS400 Verbindung Datenbankprogrammierung 2
T Form, Verbindung Feld -> DB Datenbankprogrammierung 3
J Verbindung zur Datenbank schlägt fehl... Datenbankprogrammierung 2
C keine Verbindung zur MS-SQL-Datenbank mehr Datenbankprogrammierung 4
Y Keine verbindung mit der Datenbank Datenbankprogrammierung 2
G verbindung 2er Tabellen Datenbankprogrammierung 3
G persistence.xml für MySQL - Verbindung Datenbankprogrammierung 6
C Keine Verbindung Datenbankprogrammierung 12
G 2 Tabellen in einer 1:n Verbindung Datenbankprogrammierung 2
G Verbindung mit Eclipse auf Datenbank einrichten Datenbankprogrammierung 3
M Verbindung zu Oracle DB Datenbankprogrammierung 4

Ähnliche Java Themen


Oben