[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jun 2012
    Beiträge
    39

    Question Datenbank Verbindung auf die AS400?

    Schönen guten Tag zusammen,

    ich habe mal hier ein Script welches auf die Datenbank zugreifen soll, hab es erfolgreich mit QSH gewandelt doch beim ausführen bekomme ich diese Fehlermeldung, leider weiß ich nicht genau das diese bedeutet und wie ich Sie beheben kann und hoffe auf Ihre Hilfe.

    Infos:

    Fehlermeldung:

    java.lang.ClassNotFoundException: COM.ibm.db2.jdbc.app.DB2Driver
    at java.lang.Class.forName(Class.java:130)
    at DBverbindung.main(DBverbindung.java:13)
    java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getConnection(DriverManager .java:592)
    at java.sql.DriverManager.getConnection(DriverManager .java:196)
    at DBverbindung.main(DBverbindung.java:21)
    Exception in thread "main" java.lang.NullPointerException
    at DBverbindung.main(DBverbindung.java:31)

    CLASSPATH:

    Neuer Wert . . . . . . . . . . . '''.:/QIBM/ProdData/Java400/ext/db2_classes.
    jar:/QIBM/ProdData/OS400/jt400/lib/jt400Native.jar:/QIBM/ProdData/Java400/jdk6/b
    in:/QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar'

    Call:

    java -classpath "/X/Y/C/src/" DBverbindung



    Code:

    Code:
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    
    public class HauptKlasse 
    { 
          public static void main(String[] args) 
          {
            // load the DB2 Driver 
            try {
                Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            // establish a connection to DB2
            try {
                Connection db2Conn = DriverManager.getConnection("jdbc:db2:Datenbank","USER","USER");
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            Connection db2Conn = null;
            Statement st = null;
            
            try {
                st = db2Conn.createStatement();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            String myQuery = "SELECT * FROM Bibo.Tabelle; 
            
            // execute the query
            ResultSet resultSet = null;
            
            try {
                resultSet = st.executeQuery(myQuery);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            
            // cycle through the resulSet and display what was grabbed
            
            try {
                while (resultSet.next())
                {
                    String name = resultSet.getString("Marke");
                    String phoneNumber = resultSet.getString("Anzahl");
                    System.out.println("Name: " + name);
                    System.out.println("Phone Number: " + phoneNumber);
                    System.out.println("-------------------------------");            
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            // clean up resources
            try {
                resultSet.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                st.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                db2Conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
          }
    }
    Die Toolbox mit der JDBC ist vonhanden.
    Hinweis:
    /QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar
    /QIBM/ProdData/OS400/jt400/lib/jt400Native.jar

    Beide Datei sind da.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Der Treiber-Name ist Casesensitive.
    Die Schreibweise ist also GENAU einzuhalten, damit der Treiber gefunden wird.
    Beispiel der Toolbox-Treiber:
    com.ibm.as400.access.AS400JDBCDriver

    Connectionstring:
    jdbc:as400://DB-Name/DefaultLib

    Der DB-Name muss per WRKRDBDIRE registriert sein.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jun 2012
    Beiträge
    39
    Danke für den Tipp. Hab nun bekomme ich diesen Fehler:

    java.sql.SQLException: INTERNAL ERROR: Creation of DB2Driver object for registering with DriverManager failed. -> com.ibm.db2.jd
    bc.app.DB2JDBCDataException: CCSID value is not valid.
    Hab auch schon per chgjob CCSID auf 37 gesetzt hat nichts gebracht.

    Und gibt es ein gutes Beispiel wie man eine Verbindung zur DB aufbau die den Treiber verwendet den Sie genannt haben? (com.ibm.as400.access.AS400JDBCDriver)

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Mit obigem Namen geht das bei mir so:

    Class.forName(driverName); // register driver
    con = DriverManager.getConnection(url, userName, password);
    fromSelect = con.createStatement();
    fromSelect.setQueryTimeout(60);
    fromResult = fromSelect.executeQuery("select * from ...");
    while(fromResult.next()) {
    // mach was
    }
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Jun 2012
    Beiträge
    39
    Ich habe mich mal ein Ihre Vorlage gehalten, wie es aussieht findet der den Treiber nicht obwohl ich in der CLASSPATH den angegeben habe.

    Mein Code:

    Code:
    	 public static void main(java.lang.String[] args) 	 {
    
    
    
    
    			 try {
    				Class.forName("com.ibm.as400.access.AS400JDBCDriver");
    			} catch (ClassNotFoundException e1) {
    				e1.printStackTrace();
    				 System.out.println("ERROR: One of the JDBC drivers did not load.");
    				 System.exit(0);
    			}
    
    
    		 try 
    		 {
    			// Obtain a connection with each driver.
    			Connection conn1 = DriverManager.getConnection("Jdbc:as400://DB", "X","X");
    			
    			Statement stmt = conn1.createStatement(); 
    			stmt.setQueryTimeout(60); 
    			ResultSet rs = stmt.executeQuery("select * from babachanja.BLEISTIFT");
    			
    			while(rs.next()) { 
    				System.out.println(rs.getString("Marke"));
    			}
    			
    			conn1.close();
    		} 
    		 catch (SQLException e) 
    		{
    			 System.out.println("ERROR: " + e.getMessage());
    		}
    	}
    Fehler: ERROR: One of the JDBC drivers did not load.

    CLASSHPATH:

    Umgebungsvariable . . . . . . . > 'CLASSPATH' Zeichenwert
    Neuer Wert . . . . . . . . . . . '.:QIBM/ProdData/Java400/ext/db2_classes.jar
    /QIBM/ProdData/OS400/jt400/lib/jt400Native.jar:/QIBM/ProdData/HTTP/Public/jt400
    lib/jt400.jar:/QIBM/ProdData/Java400/jdk6/bin'

    Call:

    Code:
    java -classpath "/X/Y/C/src" HalloWelt

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Wenn du beim Aufruf -classpath angibst, wird die Umgebungsvariable CLASSPATH nicht verwendet!
    Du kannst aber
    -classpath $CLASSTPTH:/X/Y/C/src HalloWelt
    verwenden.
    $Variable wird dann extrahiert.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Jun 2012
    Beiträge
    39
    Bis ich das zum laufen bekomme, werde ich alt und grau xD.

    Code steht im letzten Beitrag.

    Code:
    java -classpath $CLASSPATH: "/X/Y/C/src" HalloWelt                   
    Exception in thread "main" java.lang.NoClassDefFoundError: .X.Y.C.src
    Caused by: java.lang.ClassNotFoundException: .X.Y.C.src              
            at java.net.URLClassLoader.findClass(URLClassLoader.java:498)                     
            at java.lang.ClassLoader.loadClass(ClassLoader.java:650)                          
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)                  
            at java.lang.ClassLoader.loadClass(ClassLoader.java:616)

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... das mit dem alt und grau, das kann ich nachvollziehen, deine Lernversuche erinnern mich an ein Krabbelkind, dem man Fahrrad fahren beibringen will...

    Fang doch mal mit dem Basiswissen an:
    https://www.dropbox.com/l/7tfWJqi3BRJJSFplOXmNea

    wenn Du da durch bist und auf Datenbanken los willst, dann vielleicht hier weiter:
    http://docs.oracle.com/javase/tutorial/jdbc/

    Für die AS/400 Spezifika gibt es wenig taugliches Material, überall wo IBM draufsteht, findest Du da nur *** ( so Beispiele wie das, welches Du als Ausgangspunkt genommen hast). Aber für den Anfang bist Du ja erst mal versorgt.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    java -classpath $CLASSPATH:/X/Y/C/src HalloWelt

    Zwischen $CLASSPATH und deinem Path ist das Leerzeichen zu viel und der Pfad gehört nur in Anführungstriche bei Leerzeichen, es geht also auch:
    java -classpath $CLASSPATH:"/X/Y/C/src" HalloWelt
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Jun 2012
    Beiträge
    39
    BenderD danke für die Links.

    Zur meiner Verteidigung, ich habe kein Problem mit Java welches ist aktiv in der Schule lerne.
    Mein Problem ist es, das wir nur mit Eclipse entwickeln und ich mich mit dieser QSH Konsole überhaupt nicht auskenne und meine AS400 Kenntnisse sind noch auf einem sehr niedrigen Level.

    Aber jeder hat mal klein Angefangen, und ich hoffe das ich in einigen Jahren, hier nicht nur Fragen stelle , sondern auch helfe beantworten kann.

    Für die AS/400 Spezifika gibt es wenig taugliches Material, überall wo IBM draufsteht, findest Du da nur *** ( so Beispiele wie das, welches Du als Ausgangspunkt genommen hast).
    Kann ich nur bestätigen, ich hatte mal ein Codebeispiel für C++ übernommen der hälfte des Code war falsch und bis ich verstanden habe das auch IBM was falsch machen kann waren Tage vergangen.

    Fuerchau: Ich danke Ihnen für die Hilfe, so hat es funktioniert.


    Hatte in der zwischen Zeit was anderes versucht doch auch ohne erfolg.

    Code:
     ===> export -s CLASSPATH=/QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar:QIBM/ProdData/Java400/ext/db2_classes.jar:/QIBM/ProdData/OS
    400/jt400/lib/jt400Native.jar:/QIBM/ProdData/Java400/jdk6/bin
    und dann java "/X/Y/C/src" HalloWelt

    weil das hier geholfen haben soll --> http://newsolutions.de/forum-systemi...does-not-exist

    Aber war wohl nicht so xD.


  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... ich habe mein Statement auch nicht als Angriff gemeint.
    @Java lernen in der Schule:
    Java Programme entwickeln ist das eine und diese dann auf einem anderen Rechner zu implementieren (Deployment) ist das andere (gilt auch für andere Programmiersprachen), eine dritte Sache ist dann: wie starte ich ein Programm auf einem bestimmten Rechner.
    Für Java ist da eine gängige Vorgehensweise:
    - für die Entwicklung hat sich Eclipse weitgehend durchgesetzt.
    - für das Deployment erstellt man sich eine jar Datei seiner Anwendung. (dabei unterstützt einen auch Eclipse, normalerweise nimmt man dafür ein ANT Script)
    - starten kann man Java Anwendungen, die eine Class mit einer main Methode haben, oder startbare jar Dateien. Wie das wiederum geht, findet man hier:
    http://docs.oracle.com/javase/7/docs...s/tools/#basic
    für AS/400 wählt man dann die UNIX/Solaris Variante
    Die Windows und Unix Variante unterscheidet sich dabei nur durch das Trennzeichen in Listen.

    Ob überhaupt und welche Java Version installiert ist, bekommt man über java -version heraus. Will man eine andere installierte Java Variante verwenden, setzt man die Umgebungsvariable JAVA_HOME (näheres dazu erzählt Tante Google, wenn man nach JAVA_HOME und AS400 suchen lässt)

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Meine kleinen Java-Progrämmchen (Vorlage übrigens von Dieter) mache ich auch mit Eclipse.
    Man muss für die Generierung nur die richtige Javaversion einstellen (1.4, 1.5 oder was immer die AS/400 installiert hat), dann ist sogar das fertige Jar lauffähig.
    Die Toolbox habe ich mir in den Exclipspfad gelegt und importiert, so dass ich über Eclipse sogar testen (debuggen) kann, was mit AS/400 zwar gehen soll, ausprobiert habe ich das aber noch nie.
    Somit habe ich schon einige Progrämmchen mit kopieren zwischen AS/400-DB und einer Oracle-DB (JDBC-Treiber von Oracle) geschrieben, die schon lange problemlos (seit V5R4) im Einsatz sind und sogar Releasewechsel ohne Anpassungen überstanden haben.

    Vorschlag also:
    Lade die Toolbox auf den PC, importiere die jar in dein Projekt und du kannst alles per Eclipse erledigen.
    Das fertige jar schiebst du ins IFS, schreibst ein kleines CLP drumrum für den Aufruf per JAVA-CMD.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Update AS400 Datenbank per OLEDB/ADO
    By hpheim in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 26-05-03, 14:53
  2. AS400 Datenbank
    By infomio in forum NEWSboard Windows
    Antworten: 2
    Letzter Beitrag: 16-04-03, 15:23
  3. Datenbank
    By speedy in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 10-02-03, 14:05
  4. PC Verbindung mit AS400 / Hardwarefrage
    By Kagerbauer in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 20-10-01, 13:56
  5. Verbindung zu AS400
    By Markus_M in forum NEWSboard Windows
    Antworten: 4
    Letzter Beitrag: 19-09-01, 14:09

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •