[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Michael,

    wenn man alle Umwege selber gehen will, kommt man von RPG nie nach Java. Von der grandiosen Toolbox sind nur zwei Dinge zu gebrauchen: der JDBC Treiber und vielleicht noch die DataQ (weil man damit relativ einfach zwischen Java und Rest of AS400 kommunizieren kann und die AS400 kein Corba darf).
    allein schon das Code Snippet erfüllt mich mit Grausen (und das liegt nicht unbedingt an dir). In SQL sähe das in etwa so aus:

    ResultSet rs = statement.executeQuery();
    while(rs.next()){
    kundenNr = rs.getInt(KDNR);
    name = rs.getString(KDNAME);
    ....
    }
    und das wars!!! Ob da irgendwas gepackt ist, das interessiert mich doch in Java nicht die Bohne.

    In Hibernate sähe sowas in etwa so aus:
    Iterator kunden = session.iterate(from kunden);
    while kunden.hasNext(){
    current = (Kunde) kunden.next();
    }
    der Rest steht dann in (generierbarem) XML mapping. Und Hibernat übernimmt caching von Daten, weiss was gespeichert werden muss, kümmert sich um Keys etc.

    Was deine Frage im engeren angeht, da geht der Weg über das RecordFormat, wie in meinem vorigen Beitrag beschrieben - schau dir das mal in der Java Doc der DollSchachtel an.

    Dieter

    PS: nobody in the world, outside the as400 (was heißt nochmal Hühnergarten auf englisch?) weiss was record level access Klassen der Toolbox sind und da spielt die Musik, was Java angeht.


    Zitat Zitat von mk
    Hallo Dieter,

    ich fühle mich eigentlich nicht wie ein Masochist und lerne
    ja nur. Es handelt sich nicht um ein großes Projekt oder so.Ich möchte nur wissen wie es geht um evtl.später zu bewerten ob man es verwenden kann. Denn wenn man es nicht kennt, dann
    kann man auch nicht mitreden.
    Mein Progrämmelchen sieht mittlerweile so aus.

    for ( int i=0 ; i < tempNbrOfFields; i++){

    FieldDescription fd = tempFieldDescriptions[i];
    a = fd.getDataType();
    String b = fd.getCOLHDG();
    String c = fd.getTEXT();
    String field = null;

    if (a.getInstanceType() == AS400DataType.TYPE_PACKED ) {
    java.math.BigDecimal bd = (java.math.BigDecimal) record.getField(i);
    field = bd.toString();
    } else {
    if (a.getInstanceType() == AS400DataType.TYPE_ZONED ) {
    java.math.BigDecimal bd = (java.math.BigDecimal) record.getField(i);
    field = bd.toString();
    } else {

    field = (String) record.getField(i);
    }}

    Was mir jetzt eigentlich noch fehlt ist die Beschreibung
    der Dateiattribute COLHDG und Text.
    Bei dem String b = fd.getCOLHDG(); und
    String c = fd.getTEXT();
    sind die Werte blanks.
    In der Dateibeschreibung sind die Werte für COLHDG und Text allerdings vorhanden.

    Das gleiche habe ich wenn ich Daten über SQL lese.

    Werden die SAchen im JAVA nicht gefüllt ?
    Das kann ich mir eigentlich nicht vorstellen.

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

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    850

    Question

    Ich möchte diesen Thread nochmal aufleben lassen.

    Ich bin immer noch dabei mir die Datei - bzw. Feldbeschreibung in mein Java Programm zu holen.
    Bisher ist es mir ( mit der Hilfe eines Kollegen ) schon gelungen
    die Werte für Feldnamen und die Werte der Attribute TEXT
    zu holen :

    Die Feldnamen erhalte ich so:
    String FieldName = meta.getColumnName(index);

    Die Textbeschreibung erhalte ich über
    columnResultSet.getString("REMARKS")
    vorher wird das columnResultSet
    ResultSet columnResultSet = connection.getMetaData().getColumns("xx","xlib",AS File,"%");
    gefüllt.


    Soweit klappt das auch.
    Ich möchte aber noch gern die Attribute COLHDG für die
    Felder haben.

    Hat jemand einen Tipp ?




    Viele Grüße an alle
    von einem der bald Java freak ist

    Michael

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Michael,

    was treibst du da eigentlich??? MetaData ist die Welt von JDBC und AS400File ist Rekord Löffel Exzess entweder oder: Das AS400RecordFormat kennt alles, was dich interessiert, oder ist das alles so buggy, dass es nicht tut, oder willst du mich dazu provzieren mein erstes AS400 Object zu erzeugen???

    mfg

    Dieter Bender
    ratlos

    Zitat Zitat von mk
    Ich möchte diesen Thread nochmal aufleben lassen.

    Ich bin immer noch dabei mir die Datei - bzw. Feldbeschreibung in mein Java Programm zu holen.
    Bisher ist es mir ( mit der Hilfe eines Kollegen ) schon gelungen
    die Werte für Feldnamen und die Werte der Attribute TEXT
    zu holen :

    Die Feldnamen erhalte ich so:
    String FieldName = meta.getColumnName(index);

    Die Textbeschreibung erhalte ich über
    columnResultSet.getString("REMARKS")
    vorher wird das columnResultSet
    ResultSet columnResultSet = connection.getMetaData().getColumns("xx","xlib",AS File,"%");
    gefüllt.


    Soweit klappt das auch.
    Ich möchte aber noch gern die Attribute COLHDG für die
    Felder haben.

    Hat jemand einen Tipp ?




    Viele Grüße an alle
    von einem der bald Java freak ist

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

  4. #4
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hallo Dieter,

    ich habe deinen Rat befolgt und das Programm auf JDBC soweit
    umgestellt. Wie gesagt es klappt auch soweit.

    Das einzige was mir eben noch fehlt ist die Feldbeschreibung
    der COLHDG's für die DB Felder.
    In den Mata Daten erhalte ich die TEXT Beschreibung.
    Ich hatte gehofft das ich darüber auch die COLHDG Beschreibung erhalten würde. Dem scheint aber nicht so.


    Mal sehen wie es weitergeht .Ich werde mich noch weiter mit der Sache beschäftigen.

    Gruss Michael

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Michael,

    nochmal auf den Record Löffel Exzess (nicht das ich meine Empfehlung ändern will)
    <snip>
    SequentialFile kunde = new SequentialFile(moehre, KUNDEPATH);
    kunde.setRecordFormat();
    kunde.open();
    System.out.println(kunde.getRecordFormat().getFiel dDescription(1).getCOLHDG());
    System.out.println(kunde.getRecordFormat().getFiel dDescription(1).getDataType());
    </snip>
    die eventuellen Umbrüche sind nicht von mir.
    Was ist daran so schwer, das FieldDescription Object hattest du schon und ein Blick in die Javadoc : e voila! (mal abgesehen davon, dass die Dollschachtel mit dem COLHDG einen Bug hat, Qualität ist halt Qualität und das Zeugs ist Murks!).
    Ich würde mal vermuten, dass der COLHDG Bug sich irgendwie durchzieht und man da eventuell nicht drankommt, ausser mit brutaler Gewalt mit einem select Column-Heading from qsys2.syscolumns where...

    mfg

    Dieter



    Zitat Zitat von mk
    Hallo Dieter,

    ich habe deinen Rat befolgt und das Programm auf JDBC soweit
    umgestellt. Wie gesagt es klappt auch soweit.

    Das einzige was mir eben noch fehlt ist die Feldbeschreibung
    der COLHDG's für die DB Felder.
    In den Mata Daten erhalte ich die TEXT Beschreibung.
    Ich hatte gehofft das ich darüber auch die COLHDG Beschreibung erhalten würde. Dem scheint aber nicht so.


    Mal sehen wie es weitergeht .Ich werde mich noch weiter mit der Sache beschäftigen.

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

  6. #6
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hi Dieter,

    irgendwie habe ich das Gefühl das ich mich im Kreis drehe
    und das ganze Zeug scheint nicht so der Hit zu sein.

    Ich habe dein Vorschlag eingebaut:
    SequentialFile kunde = new SequentialFile(system, filePathName.getPath());

    kunde.setRecordFormat();
    kunde.open(AS400File.READ_ONLY, 100, AS400File.COMMIT_LOCK_LEVEL_NONE);
    System.out.println(kunde.getRecordFormat().getFiel dDescription(1).getCOLHDG());

    Wenn ich mir das im Debugger ansehe
    sehe ich unter RecordFormat => elementData die Feldliste
    und die Attribute Text und COLHDG sind nicht gefüllt.

    Toll.... kein Wunder das ich mich wie im Tollhaus fühle.

    Da nimmt man die Doklu von der IBM ..... meint man hat eine
    Idee... und dann klappt der ganze sch.......nicht.

    So jetzt habe ich kein Bock mehr.
    Gruss Michael

Berechtigungen

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