Wie mit Datenbank verbinden, z.B. DB2? VERZWEIFLUNG PUR!

Status
Nicht offen für weitere Antworten.
Hallo, ich bin Umsteiger von PHP und sitze hier an meinem Desktoprechner.
Auf einem anderen Rechner (Linux) läuft eine IBM DB2-Datenbank, zu der ich mich verbinden möchte. Ich nutze das Apache Jmeter und kann mich über das Jmeter Messungen vornehmen. Dazu muss ich über VPN mit dem fremden Netz verbunden sein und alles läuft wie es soll.
Vorher muss ich für den jmeter ca. ein Dutzend Parameter in einer JDBC-Verbindungskonfiguration angeben. Das habe ich gemacht, und jmeter läuft prima. Also grundsätzlich ist die Verbindung von meinem Windowsrechner zu einer DB2-Datenbank auf einem Linux-System möglich.


Soooooo.....


Nun will ich mal ein eigenes Javaprogramm schreiben, um ein paar SQL-Befehle zu senden. Ich bin Umsteiger von
PHP / Mysql und bin es gewohnt, einfach zu schreiben:

$db=@mysql_connect("host","user","passwort");
mysql_select_db(datenbank,$db);
echo mysql_error($db);

3 Zeilen! 3 einfache Zeilen und alles wird schon mit PHP mitgeliefert!

Wie verbinde ich mich nun unter JAVA mit einer DB2-Datenbank? Ich habe mal das Inseltutorial angelesen, aber werde daraus nicht so richtig schlau: da gibt es zig Treiber, die man evtl. vorher noch installieren muss!

Wo muss man die Treiber installieren?
Auf dem eigenen Rechner?
Auf dem Rechner, auf dem die Datenbank läuft? (Da sind sie wohl schon installiert. jmeter ist in Java und läuft prima)

Wenn man die Treiber dann installiert hat(?), wie geht es weiter?
Wie kriegt man zumindest mal einen Pieps von der Datenbank auf meine Java-Konsole ausgegeben?

Zur Info: Ich habe mir Eclipse runtergeladen, das ist auch neu für mich. Mein Rechner läuft mit Windows XP.


Danke für Antworten und Tipps!!
 

The_S

Top Contributor
Es gibt nicht zig Treiber, sondern es gibt genau einen Treiber für jede DB. Diesen Treiber installierst du auch nicht, sondern machst ihn für deine Java-Klasse verfügbar indem du ihn in den Classpath einbindest.

Jenachdem was für eine Technologie du hast (Client verbindet sich direkt auf die DB oder Client kommuniziert mit Server, welcher auf die DB zugriff hat) muss dort, wo die Verbindung aufgebaut werden soll, der Treiber verfügbar gemacht werden.

Wenn du das hast, ist es genauso wie im Insel-Tutorial:

1.) Treiber über Class.forName laden
2.) Connection über den DriverManager aufbauen
3.) (Prepared)Statement von der Connection mit dem gewünschen SQL erstellen lassen
4.) Statement abschießen
5.) ggf mit einem ResultSet das Ergebnis abfragen.
 
So sieht es inzwischen bei mir aus:


Code:
import java.sql.*; 

public class db {

	public static void main(String[] args) {
		
		 try 
		    { 
				Class.forName( "com.ibm.db2.jcc.DB2DataSource" ); 
		    } 
		    catch ( ClassNotFoundException e ) 
		    { 
		      System.err.println( "Keine Treiber-Klasse!" ); 
		      return; 
		    } 
		    Connection con = null;
		    try
		    {
			con = DriverManager.getConnection( "jdbc:db2:HOSTNAMEDESRECHNERMITDERDATENBANK", "USER", "PASS" );		    
		    }
		    catch ( SQLException e ) 
		    { 
		      e.printStackTrace(); 
		    } 	    
	}
}

Aber das Ergebnis ist: Keine Treiber-Klasse. Die ClassNotFoundException wird geworfen.
Muss ich DOCH noch irgendeinen Spezialtrick um den Treiber ausführen?
 
Hobbit_Im_Blutrausch hat gesagt.:
Nein, das Jar des Treibers muss wie gesagt in den Classpath. Mehr nicht.
Aha! Ich muss mir also noch irgendeine jar-Treiberdatei besorgen und irgendwohin kopieren..?
Im bin-Ordner von jmeter liegt ein ganzer Haufen jr-Dateien. Irgendeine von denen scheint dann ja die fehlende zu sein.

Was ist der classpath und wie krieg ich die Dateien da hinein?

Hobbit_Im_Blutrausch hat gesagt.:
Klassennamen schreibt man btw. groß.
 
Ich habe einfach mal auf Verdacht das ganze jakarta-jmeter-Verzeichnis mit in den Buildpath integriert. Eclipse hat nen Weilchen rumgearbeitet (building workspace...)

Doch: Auch ein neuer Compilerlauf brachte jetzt nur das Ergebnis wie vorher: "Keine Treiber-Klasse!" Wie kann es sein, dass mein Programm nicht läuft, aber jmeter schon?

Den Treibernamen habe ich auch korrigiert: com.ibm.db2.jcc.DB2Driver
Allerdings ist unter den zahlreichen jar-Dateien im jmeter-Ordner keine, die com.ibm.db2.jcc.DB2Driver.jar heißt oder auch nur ähnlich.

Muss ich mir den Treiber noch irgendwo herunterladen?
 

tfa

Top Contributor
Bei mir heißt die JAR-Datei "db2jcc.jar". Dazu gibt es noch eine Lizenz-JAR namens "db2jcc_license_cisuz.jar", die auch in den Klassenpfad gehört.
 
tfa hat gesagt.:
Bei mir heißt die JAR-Datei "db2jcc.jar". Dazu gibt es noch eine Lizenz-JAR namens "db2jcc_license_cisuz.jar", die auch in den Klassenpfad gehört.

Weiß jemand, wo es den Treiber zum download gibt? Ich habe es hier probiert:
http://publib.boulder.ibm.com/infoc...sp?topic=/com.ibm.db2.udb.doc/ad/t0010264.htm

Aber wenn ich mir den Text da so durchlese, geht es um die Installation einer DB2-Datenbank auf meinem Rechner. Das will ich nicht! Die Datenbank läuft wie gesagt auf einem anderem Rechner und ich brauche wohl nur noch die "db2jcc.jar" und "db2jcc_license_cisuz.jar". Bei IBM habe ich mich mal registriert, falls das weiterhilft.

Es muss doch irgendwie möglich sein, sich einfach nur mit Java mit einer Datenbank zu verbinden?!? Ich stehe gerade wie der Ochse vorm Berg und kann nicht glauben, dass man erst hunderte von Megabytes runterladen und installieren muss nur für einen popeligen Treiber?!?
 
Sooooo..... Jetzt habe ich mir mal den DB2-Client installiert, den man sich bei IBM downloaden kann, nachdem man sich registriert hat:
http://www-01.ibm.com/software/data/db2/9/download.html Ungefähr 300 MB!!!

Nach einer mittleren Konfigurationsorgie bin ich nun über diesen DB2-Client mit der entfernten Datenbank verbunden. In meinem Windows-System läuft zusätzlich der Prozess "db2mgmtsvc.exe" und unter C:\Programme\IBM\SQLLIB\java befinden sich so einige .jar-Dateien, u.a. auch die db2jcc.jar !!

Mann, war das ein Akt!! Endlich gehts weiter!!
 
Was ist denn jetzt wieder kaputt? Das Codebeispiel gibt jetzt aus:


IBM DB2 JDBC Universal Driver Architecture(c) Copyright IBM Corporation 2003

Syntax:

java com.ibm.db2.jcc.DB2Jcc
[-version]
[-configuration]
[-help]

-version Gibt den Treibernamen und die Version aus.
-configuration Gibt Informationen zur Treiberkonfiguration aus.
-help Gibt Syntaxinformationen aus.

Ich habe die db2cc.jar erfolgreich in den Buildpath aufgenommen:

Links die lange aufgeklappte Liste... Beim ersten compilieren musste ich eine Datei aus dem .jar_archiv auswählen und habe einfach irgendeine ausgewählt. Da kam so ein Pop-Up von Eclipse oder von IBM oder von wem auch immer.

- Wie geht es jetzt weiter?
- Wie kann ich jetzt noch nachträglich herausfinden, welche Datei ich ausgewählt habe und ob das die richtige Wahl war?
- Hat jemand vielleicht ein einfaches funktionierendes Beispiel, das folgendes leistet: Verbinden zu einer Datenbank und Abfrage einer Tabelle?

Ich komme nicht weiter. Wieso muss das alles sooooo ein Riesenaufwand sein, nur um eine einfach SQL-Abfrage zu stellen..?
Hier nochmal der aktuelle Code:
Code:
import java.sql.*; 

public class DATA { 

   public static void main(String[] args) { 
        
       try 
          { 
            Class.forName( "com.ibm.db2.jcc.DB2Driver" ); 
          } 
          catch ( ClassNotFoundException e ) 
          { 
            System.err.println( "Keine Treiber-Klasse!" ); 
            return; 
          } 
          Connection con = null; 
          try 
          { 
         con = DriverManager.getConnection( "jdbc:db2:HOSTNAMEDESRECHNERMITDERDATENBANK", "USER", "PASS" );          
          } 
          catch ( SQLException e ) 
          { 
            e.printStackTrace(); 
          }        
   } 
}
 

tfa

Top Contributor
Du musst schon dein Programm starten, also die Klasse DATA. Und nicht com.ibm.db2.jcc.DB2Jcc.
Klick die Klasse in Eclipse an, dann rechte Maustaste->Run As->Java Application
 
Ahja, das hat wohl geholfen! Jetzt ist die Ausgabe:

com.ibm.db2.jcc.b.nm: [jcc][4038][12241][3.50.152] T2LUW-Ausnahmebedingung: SQL1013N Der Aliasname der Datenbank oder der Datenbankname "HOSTNAME" wurde nicht gefunden. SQLSTATE=42705
ERRORCODE=-1013, SQLSTATE=42705
at com.ibm.db2.jcc.b.wc.a(wc.java:579)
at com.ibm.db2.jcc.b.wc.a(wc.java:57)
at com.ibm.db2.jcc.b.wc.a(wc.java:102)
at com.ibm.db2.jcc.uw.UWExceptionGenerator.a(UWExceptionGenerator.java:83)
at com.ibm.db2.jcc.uw.UWExceptionGenerator.a(UWExceptionGenerator.java:106)
at com.ibm.db2.jcc.uw.UWConnection.a(UWConnection.java:623)
at com.ibm.db2.jcc.uw.f.w(f.java:201)
at com.ibm.db2.jcc.uw.UWConnection.a(UWConnection.java:555)
at com.ibm.db2.jcc.uw.UWConnection.a(UWConnection.java:400)
at com.ibm.db2.jcc.uw.UWConnection.<init>(UWConnection.java:290)
at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:253)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at DBANK.main(DBANK.java:20)

Das bedeutet ja scheinbar, dass schon mal der Versuch einer Verbindung unternommen wird und der Versuch aber scheitert. Weil "jdbc:db2:HOSTNAMEDESRECHNERMITDERDATENBANK", "USER", "PASS" natürlich nicht die richtigen Parameter sind. Da werde ich es dann mal mit den korrekten Daten probieren....

Sag mal: Du arbeitest wohl auch mit der IBM DB2? Wenn Du Deine DB2-Steuerzentrale einmal gestartet hast, kannst Du die dann auch nicht mehr beenden? Ist bei mir so. Win XP SP3 und JAVA 6 Aktualisierung 11. Auch ein seltsamer Effekt...
 

tfa

Top Contributor
Java-Umsteiger hat gesagt.:
Sag mal: Du arbeitest wohl auch mit der IBM DB2? Wenn Du Deine DB2-Steuerzentrale einmal gestartet hast, kannst Du die dann auch nicht mehr beenden? Ist bei mir so. Win XP SP3 und JAVA 6 Aktualisierung 11. Auch ein seltsamer Effekt...
Keine Ahnung, unsere DB2 läuft im Rechenzentrum auf OS/390. Ich verbinde mich nur über JDBC mit der Datenbank.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Datenbank mit GUI verbinden - Wie? Java Basics - Anfänger-Themen 5
J GUI mit phpMyAdmin Datenbank verbinden Java Basics - Anfänger-Themen 0
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
I Element n aus Datenbank Query (JPA / Hibernate) Java Basics - Anfänger-Themen 3
I Passwort in Datenbank speichern um später wieder auszulesen Java Basics - Anfänger-Themen 5
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
E schneller von der Datenbank abfragen Java Basics - Anfänger-Themen 15
E Datenbank Spalte zusammenzählen Java Basics - Anfänger-Themen 2
R Datenbank Java Basics - Anfänger-Themen 1
I API Key´s in der Datenbank decrypt / encrypten? Java Basics - Anfänger-Themen 23
I Werte (u.a. Geldbeträge) in Datenbank speichern und Rundungen? Java Basics - Anfänger-Themen 8
M Mehrere Datenbank zugriffe über tomee.xml regeln? Java Basics - Anfänger-Themen 1
M Datenbank oder Textdatei? Java Basics - Anfänger-Themen 4
S Datenbank Befehl nach Login Java Basics - Anfänger-Themen 5
S Datenbank Tabelle eine Zeile an einer bestimmten Stelle einfügen Java Basics - Anfänger-Themen 2
M Von der Datenbank zum Textfield Java Basics - Anfänger-Themen 16
R Best Practice Logik in der Datenbank oder in Java? Java Basics - Anfänger-Themen 3
R Datenbank-Werte dynamisch ausgeben Java Basics - Anfänger-Themen 19
B Frage zu Datenbank Design - Rechnungen, Angebote... und deren Positionen Java Basics - Anfänger-Themen 4
B Datenbank: Entity mit vielen Referenzen? Ansatz so ok? Java Basics - Anfänger-Themen 8
T Datenbank | Welche am Sinnvollsten? Java Basics - Anfänger-Themen 5
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
M Datenbank in jTable Laden Java Basics - Anfänger-Themen 49
M Datenbank verbindung Java Basics - Anfänger-Themen 19
J Java Verbindung mit mysql Datenbank Java Basics - Anfänger-Themen 3
B Datenbank, aktuelle Ende als Zahl an Label übergeben Java Basics - Anfänger-Themen 7
T Collections Geeignete Collection/Liste/Datenbank Java Basics - Anfänger-Themen 17
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
R Input/Output Verbindung mit mySql-Datenbank Java Basics - Anfänger-Themen 9
D Compiler-Fehler Wert auf Datenbank übertragen und Sleep Thread Java Basics - Anfänger-Themen 3
N (Java) Regristrierung und Login System mit einer Datenbank Java Basics - Anfänger-Themen 5
J Datenbank Zugriff Java Basics - Anfänger-Themen 24
J Mit JSF Formular in Datenbank schreiben Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Verschiede Aktionen der Datenbank getrennt durchführen Java Basics - Anfänger-Themen 4
DaCrazyJavaExpert Datenbank wird nicht erstellt Java Basics - Anfänger-Themen 31
E Daten gehen nicht in Datenbank Java Basics - Anfänger-Themen 14
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
Meeresgott OOP Gui, Logik und Datenbank richtig aufbauen Java Basics - Anfänger-Themen 43
B Schreiben von zu vielen Einträgen in einer Datenbank Java Basics - Anfänger-Themen 9
S Datenbank auf Knopfdruck abfragen Java Basics - Anfänger-Themen 8
M Java als Webanwendung mit Datenbank abfrage Java Basics - Anfänger-Themen 3
1 Datenbank in Java Java Basics - Anfänger-Themen 1
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
J Bücher Datenbank Java Basics - Anfänger-Themen 5
S Best Practice MVC und große Datenmengen aus einer mySQL - Datenbank Java Basics - Anfänger-Themen 24
J Datum und Uhrzeit in Datenbank falsch hinterlegt Java Basics - Anfänger-Themen 13
R Erstversuch Datenbank Java Basics - Anfänger-Themen 6
I Daten speichern ohne Datenbank Java Basics - Anfänger-Themen 20
A Erste Schritte Verbindung zu MySQL Datenbank herstellen Java Basics - Anfänger-Themen 7
T Sql Datenbank - variable übergeben? Java Basics - Anfänger-Themen 8
C Passwörter möglichst sicher in Datenbank speichern Java Basics - Anfänger-Themen 18
W Erste Schritte Exceltabelle in Datenbank übertragen mittels XDEV Java Basics - Anfänger-Themen 7
K Erste Schritte Datenbank SQL erklärung Java Basics - Anfänger-Themen 15
B Lokale Datenbank Java Java Basics - Anfänger-Themen 2
B Klassen Doppelte werte Filtern XML, Datenbank und DOM Java Basics - Anfänger-Themen 3
Todesbote Int Array mit Hibernate in Datenbank speichern. Java Basics - Anfänger-Themen 2
U Datenbank in Java Java Basics - Anfänger-Themen 8
M Keine Datenbank verbindung Java Basics - Anfänger-Themen 14
N mit Werten aus einer mysql datenbank in java rechnen Java Basics - Anfänger-Themen 17
Q Datenbank nicht über separaten Server Java Basics - Anfänger-Themen 4
B Dateiname in Datenbank schreiben Java Basics - Anfänger-Themen 2
J fortlaufende Objekte durch Variable auswählen; Datenbank Java Basics - Anfänger-Themen 4
S ArrayList in mysql Datenbank speichern Java Basics - Anfänger-Themen 6
C Datenbank - Welche Java Basics - Anfänger-Themen 5
B Java Objektorientierte Datenbank - Assoziation Hilfe Java Basics - Anfänger-Themen 4
G Input/Output Serialisierung oder Datenbank Java Basics - Anfänger-Themen 6
J Erste Schritte Objekte in Datenbank speichern Java Basics - Anfänger-Themen 26
A Android Datenbank gaaanz einfaches Insert geht nicht - warum? Java Basics - Anfänger-Themen 4
L Erste Schritte Datenbank Zugangsdaten sicher? Java Basics - Anfänger-Themen 15
S Input/Output Primzahlen Datenbank Java Basics - Anfänger-Themen 11
B Mit Java-Programm Daten aus MySQL-Datenbank auslesen, lokal und nicht lokal. Java Basics - Anfänger-Themen 10
K Input/Output Datenbank Java Basics - Anfänger-Themen 27
M Datenbank in die Gui Java Basics - Anfänger-Themen 4
J JTable mit Daten aus Datenbank füllen Java Basics - Anfänger-Themen 3
F Erfassung von PCs in eine SQLite-Datenbank über JDBC Java Basics - Anfänger-Themen 9
T Datenbank Abfrage Exception Null Java Basics - Anfänger-Themen 2
M Brauche ich ein Datenbank oder nicht? Java Basics - Anfänger-Themen 6
D JDBC Datenbank fail?! Java Basics - Anfänger-Themen 20
A Problem beim einfügen in eine Datenbank Java Basics - Anfänger-Themen 2
F Classpath Datenbank ... nur wo? Java Basics - Anfänger-Themen 24
H Datenbank suche in kleine Schritte Java Basics - Anfänger-Themen 6
B Personalnummer aus Datenbank Java Basics - Anfänger-Themen 3
M Welche Datenbank? Java Basics - Anfänger-Themen 5
J RadioButtonInhalt in Datenbank übergeben Java Basics - Anfänger-Themen 3
R Datenbank bei Klassenverteilung führt zu NullPointerException Java Basics - Anfänger-Themen 7
J PW von Datenbank wie abspeichern? Java Basics - Anfänger-Themen 2
F Verbindung zu MySql Datenbank Java Basics - Anfänger-Themen 4
MU5T4NG JPasswordField als Hash in Datenbank abspeichern Java Basics - Anfänger-Themen 3
J Kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
J Eigene kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
F Collections Datenbankdaten in einer Map speichern, bearbeiten, sortieren und wieder in Datenbank schreiben Java Basics - Anfänger-Themen 20
T Zugangsdaten für Datenbank in Java-Programm speichern? Java Basics - Anfänger-Themen 5
S Schnittstelle für Datenbank bzw. Dateiformat Java Basics - Anfänger-Themen 2
C ComboBoxModel mit Daten der Datenbank verändern Java Basics - Anfänger-Themen 2
T Datenbank automatisch erzeugen beim ersten Start Java Basics - Anfänger-Themen 6
I Datenbank - nach erster Verbindung keine Verbindung mehr Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben