# Anfängerfrage



## bfr (5. Sep 2007)

Hey ho .. 

ich hoffe mein Problem wird noch nirgends erklärt, hab zumindest nichts gefunden.
Wenns doch so ist, verweist mich doch bitte..

Ich möchte mit eclipse auf eine oracle datenbank zugreifen, und zwar weiß ich nun nicht welchen jdbc treiber ich hierfür brauche..

ich hab zwar auf der page von oracle die ojdbc14.jar (g10 .. jdk1.5) runter geladen. aber ich hab keine ahnung ob es die richtige ist. da es ja nur eine file ist. und ich hab mit einer ganzen bibliothek gerechnet.
ich hab auch keine ahnung, wo ich die hin packen muss.

ich danke schon mal im vorraus für eure hilfe.. 

Greets bfr


----------



## tuxedo (5. Sep 2007)

Jars enthalten in der Regel eine ganze Bibliothek. Hast du überhaupt schon mal in eine JAR reingeschaut, oder weißt du was eine JAR ist?

Ob's die richtige ist, kann ich dir nicht sagen. Kommt wohlmöglich auf deine Oracle-DB an: Wenn die Oracle-Seite dir für deine Oracle-Version diese Bibliothek angebiten hat, dann wird's wohl die richtige sein.

Du solltest die Jar in deinen Classpath stecken, damit sie von der VM und somit von deiner Anwendung gefunden wird. 

- Alex


----------



## insertcoin (6. Sep 2007)

ok .. 
ich denke ich hab nun den richtigen treiber.

aber nun kann ich ihn nicht mal anmelden, wie gesagt möchte ich auf eine oracle dtanebank zugreifen. udn wenn ich im internet nach vorlagen such, finde ich x verschiedene sachen..

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

DriverManager.registerDriver(new OracleDriver());

und egal was ich versuche, es kommt immer eine classNotFound exception ..
hab ich den treiber falsch eingesetzt?? oder muss ich etwas ganz anderes eingeben??

kann mir vielleicht jemand erklären, auf was es hier ankommt? komm echt nicht weiter..

Greeetz bfr


----------



## P3AC3MAK3R (6. Sep 2007)

Hast Du das Treiber-JAR-File in Deinen Classpath aufgenommen?


----------



## insertcoin (6. Sep 2007)

hab mir die jar file in meinen jdk/lib ordner gepackt, das müsste doch reichen oder??


----------



## P3AC3MAK3R (6. Sep 2007)

Lege besser ein neues Unterverzeichnis in Deinem Eclipse-Projekt an (z. B. "lib") und lege den Treiber dort ab. Zusätzlich solltest Du dann das JAR-File unter (Rechtsklick auf das Projekt) - Properties - Libraries eintragen.


----------



## Murray (6. Sep 2007)

insertcoin hat gesagt.:
			
		

> hab mir die jar file in meinen jdk/lib ordner gepackt, das müsste doch reichen oder??


Nein, das reicht nicht. Es würde allerdings reichen, das jar-File in das Verzeichnis jre/lib/ext zu packen; besser ist es aber , das Jar-File sauber in den Classpath einzutragen (bzw. das wie von P3AC3MAK3R vorgeschlagen der IDE zu überlassen).


----------



## insertcoin (6. Sep 2007)

ok .. ich hab die jar file in den jre/lib/ext gesteckt, und auch in den projektordner.
anmelden mit rechtsklick auf projekt --> properties --> libraries geht doch nicht oder?? .. hab die jar file halt in window -->preferences --> installed JREs --> meinem jdk zugefügt ..

wenn ich jetzt echt nur die anmeldung versuchen möchte ..

public class test1 {


	public static void main(String args[]){

		// 1.JDBC Treiber laden

		try {
	         Class.forName("oracle.jdbc.driver.OracleDriver");
	        }
	         catch (ClassNotFoundException e) {
	             System.err.println (e) ;
	             System.exit (-1) ;
	         }
}

dann kommt die fehlermeldung Thread [main] (suspended(exception ClassNotFoundException) ..

komm mir langsam echt bescheuert vor .. 

kann es doch am treiber liegen??
ich hab den *ojdbc14.jar* für *Oracle Database 10g Enterprise Edition Release 10.1.0.4.0* .. aber ich hab ja noch nicht mal auf die datenbank zugegriffen..


----------



## Murray (6. Sep 2007)

insertcoin hat gesagt.:
			
		

> anmelden mit rechtsklick auf projekt --> properties --> libraries geht doch nicht oder??


Doch, eigentlich wäre das der richtige Weg - Projekt selektieren->Rechtsklick->Properties->Java Build Path->Libraries  und dann entweder Add Jars oder Add External Jars


----------



## insertcoin (6. Sep 2007)

achso .. ok, das geht .. aber da ist die file leider schon drin .. 

kann mir jetzt nicht mehr helfen, hab alles erdenkliche versucht.


----------



## sparrow (6. Sep 2007)

Hast du denn mal geschaut ob in der .jar überhaupt eine entsprechende Datei drin ist?
: oracle.jdbc.driver.OracleDriver

Wobei die Punkte die Untersverzeichnisse trennen und OracleDriver eine .class sein müsste.


----------



## insertcoin (6. Sep 2007)

ja hab nachgeschaut, die file ist drin.

gibts denn keine möglichkeit mehr warum das nicht will?


----------



## sparrow (6. Sep 2007)

Dann ist die .jar nicht korrekt in den classpath aufgenommen.


----------



## HLX (6. Sep 2007)

Führst du das Programm in Eclipse aus?

Falls ja: unter Menüpunkt Run/Run... bzw. Run/Open Run Dialog... die entsprechende Java Application auswählen un die  Registerkarte "Classpath" anklicken. Hier unter "User Entries" das JAR hinzufügen.

Der Build-Path in den Projekteinstellungen gilt nur zur "Entwicklungszeit".


----------



## tuxedo (6. Sep 2007)

Also die Run/Open Einstellung hab ich noch nie anpassen müssen. Es hat immer gereicht die Lib, die bei mir in einem Projekt-Unterordner "lib" liegt, mit rechter Maustaste anzuklicken und "Build Path -> Add to Build Path" auszuwählen. 

- Alex


----------



## HLX (6. Sep 2007)

Klar. Geht natürlich. Da war ich mal wieder zu voreilig.

@bfr: setzt du wirklich mind. JRE 1.4 zur Ausführung ein?


----------



## insertcoin (6. Sep 2007)

ja schon, ich benutze die 1.5.. müsste ja auch gehen ..

ich bekom das jetzt in eclipse irgendwie nicht zum laufen .. in meiner anderen entwicklungsumgebung läuft der treiber .. 

ist echt dumm .. hätte gern mit eclipse gearbeitet .. hab mir aber auch gleich das leichteste thema ausgesucht, um einzusteigen ..  :bahnhof:  
wenn ich wieder den nerv hab, setz ich mich wieder hin und schau dass das läuft.. werd mich dann melden wenn ich den fehler hab.

auf jeden fall, vielen dank für die vielen tips ..


----------



## insertcoin (12. Sep 2007)

ok .. das thema ist gegessen .. jetzt läufts, vor mir hat ein anderer user mit dem installierten eclipse gearbeitet .. und der hat da da mit irgendwas anderem compilieren lassen.
echt dumm, musste das nur wieder umschalten.. aber wusste ja gar nicht dass das so ist.
sorry fürs viele stressen..

und könnte bitte jemand diesen thread schließen .. danke!!

Greeetz


----------



## tuxedo (12. Sep 2007)

Nö, aber du kannst ihn abhaken (siehe unten links).

- Alex


----------



## SlaterB (12. Sep 2007)

schwierig, wenn als Anonymer eröffnet


----------



## tuxedo (12. Sep 2007)

Ah so, ja klar. --> Problem


----------



## insertcoin (13. Sep 2007)

ja genau, hab den thread leider vor der anmeldung aufgemacht. kann den nicht ein admin schließen?!


----------



## insertcoin (14. Sep 2007)

da der thread noch nicht geschlossen ist hau ich noch eine frage rein ..

bezieht sich direkt auf sql, hoffe das ist ok .. 

ich suche einen befehl der mir in meiner relation eine neue spalte anlegt, wenn das übergebene attribut noch nicht vorhanden ist. ansonsten soll er nichts machen ..
ich würde ja ADD nehmen, aber da legt er ja ein neues leeres datenfeld mit evtl. standardwerten in die vorhandene spalte .. das möchte ich nicht.

Kennt da jemand was??


----------



## maki (14. Sep 2007)

Hä?

Du hast aber hoffentlich nicht vor, während der Programmausführung das DB Schema zu ändern, oder?


----------



## insertcoin (14. Sep 2007)

ich frage einen bestimmten datensatz ab, wenn attribute auftauchen die in der DB noch nicht als spalten angelegt sind sollen diese ergänzt werden. ALso, ich ändere die Relation ..
aber die daten werden erst danach eingelesen..


----------



## maki (14. Sep 2007)

Ich versteh dich immer noch nicht...



> ich frage einen bestimmten datensatz ab,


Ok, falls der Datensatz vorhanden ist, bekommst du ihn im ResultSet zurück, samt aller abgefragter Attribute (festgelegt durch die SELECT Anweisung).



> wenn attribute auftauchen die in der DB noch nicht als spalten angelegt sind sollen diese ergänzt werden.


Woher sollten denn diese Attribute kommen, wenn nicht aus der Tabelle selbst?

Möchtest du vielleicht ein leeres (ohne Daten) DB Schema per JAVA/JDBC ändern, bevor es mit Daten gefüllt wird?

Den ADD Befehl kenne ich in SQL nicht, ist das PL/SQL?
ALTER TABLE wäre ansonsten in SQL eine Möglichkeit, eine Tabelle zu ändern.


----------



## insertcoin (14. Sep 2007)

ich frage die attribute in einer txt file über java ab .. 
dann schicke ich den befehl die neue spalte einzufügen über jdcb an die datenbank .. 

ja, ich mein ja alter table add(attribute format);
mit diesem befehl geht es normal, aber ich habe nachgelesen.. wenn das attribut schon vorhanden ist wird ein neuer leerer datensatz mit evtl. standardwerten soweit das eingestellt ist, angelegt. und das möchte ich eben nicht, deshalb wollte ich fragen ob nicht jemand einen anderen befehl kennt um spalten dazu zu  fügen.. bei dem nichts passiert, sollte sie schon existieren..


----------



## tuxedo (14. Sep 2007)

Wieso prüfst du nicht vorher ob es die spalte schon gibt? Wäre ja auch eine Lösung...


----------



## Murray (14. Sep 2007)

insertcoin hat gesagt.:
			
		

> ... ich habe nachgelesen.. wenn das attribut schon vorhanden ist wird ein neuer leerer datensatz mit evtl. standardwerten soweit das eingestellt ist, angelegt.


Wo hast du diese Information her?


----------



## insertcoin (17. Sep 2007)

hab die info aus so nem lehrbuch, für oracle datenbanken.
aber ich mach jetzt einfach eine abfrage rein. ist mehr zu tun, aber dann hat sich das erledigt.


----------

