PDA

View Full Version : Probleme mit JBuilder und AS/400 DB



nichterwitz
17-06-04, 11:55
Hallo

Ich habe ein kleines Problem!

Im Rahmen einer Projektarbeitin meinem Praktikum habe ich einen
Online-shop programmiert, der auf Servlets und JSP basiert. Die
Datenbank dahinter hatte ich zur Entwicklungszeit auf Access laufen.
Zu dem Shop hab ich mit JBuilder noch ein Tool gemacht, dass auf die
Datenbanken zugreift und ich komfortabel den Datenbestand ändern kann.
Weil die Praktikumsfirma ein AS/400 Systemhaus ist, sollte ich die
Datenbank auf der AS/400 laufen haben. Die haben wir auch angelegt und
habs auch in meinen Shop eingebunden, aber jetzt funkitoniert die
Sache mit dem Wartungstool für die DBs nicht mehr :-( Habe ganz normal
ein Database Komponente benutzt und dort den Treiber für die AS/400
eingebunden. Dann habe ich ein QueryDataSet und dort die SQL Abfrage
reingemacht. Angezeigt wird mir das in einer JdbTable.
Er zeigt mir auch den Inhalt der Datenbank an, nur wenn ich was ändere
und speicher will, kommt eine Fehlermeldung!

Mit der Access DB gings prima nur mit der AS/400 irgendwie nicht und
ich finde darüber nirgends infos.

Könnt ihr helfen?

Beim Einfügen einer Zeile in Tabelle "VL01TNIC"."NRMR00" ist ein
Fehler aufgetreten bei klick auf weiter kommt dann

[SQL7008] NRMR00 in VL01TNIC für Operation ungültig.

Wenn ich auf Stack-Verfolgung klicke erscheint

com.borland.dx.sql.dataset.ResolutionException: Beim Einfügen einer
Zeile in Tabelle "VL01TNIC"."NRMR00" ist ein Fehler aufgetreten

at com.borland.dx.sql.dataset.ResolutionException.a(U nknown Source)
at com.borland.dx.sql.dataset.ResolutionException.b(U nknown Source)
at com.borland.dx.sql.dataset.l.b(Unknown Source)
at com.borland.dx.sql.dataset.QueryResolver.insertRow (Unknown Source)
at com.borland.dx.sql.dataset.ResolutionManager.c(Unk nown Source)
at com.borland.dx.sql.dataset.ResolutionManager.d(Unk nown Source)
at com.borland.dx.sql.dataset.ResolutionManager.d(Unk nown Source)
at com.borland.dx.sql.dataset.ResolutionManager.saveC hanges(Unknown
Source)
at com.borland.dx.sql.dataset.ResolutionManager.saveC hanges(Unknown
Source)
at com.borland.dx.sql.dataset.Database.saveChanges(Un known Source)
at com.borland.dx.sql.dataset.QueryDataSet.saveChange s(Unknown Source)
at com.borland.dx.dataset.DataSet.saveChanges(Unknown Source)
at
com.borland.dbswing.JdbNavToolBar.actionPerformed( JdbNavToolBar.java:1799)
at
javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:1450)
at
javax.swing.AbstractButton$ForwardActionEvents.act ionPerformed(AbstractButton.java:1504)
at
javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:378)
at
javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:250)
at
javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:216)
at
java.awt.AWTEventMulticaster.mouseReleased(AWTEven tMulticaster.java:230)
at
java.awt.AWTEventMulticaster.mouseReleased(AWTEven tMulticaster.java:230)
at java.awt.Component.processMouseEvent(Component.jav a:3715)
at java.awt.Component.processEvent(Component.java:354 4)
at java.awt.Container.processEvent(Container.java:116 4)
at java.awt.Component.dispatchEventImpl(Component.jav a:2593)
at java.awt.Container.dispatchEventImpl(Container.jav a:1213)
at java.awt.Component.dispatchEvent(Component.java:24 97)
at
java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:2451)
at
java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:2216)
at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:2125)
at java.awt.Container.dispatchEventImpl(Container.jav a:1200)
at java.awt.Window.dispatchEventImpl(Window.java:914)
at java.awt.Component.dispatchEvent(Component.java:24 97)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 339)
at
java.awt.EventDispatchThread.pumpOneEventForHierar chy(EventDispatchThread.java:131)
at
java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:98)
at
java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:85)

Exception-Kette:

java.sql.SQLException: [SQL7008] NRMR00 in VL01TNIC für Operation
ungültig.
at com.ibm.as400.access.JDError.throwSQLException(JDE rror.java:388)
at
com.ibm.as400.access.AS400JDBCStatement.commonExec ute(AS400JDBCStatement.java:640)
at
com.ibm.as400.access.AS400JDBCPreparedStatement.ex ecuteUpdate(AS400JDBCPreparedStatement.java:949)
at com.borland.dx.sql.dataset.j.c(Unknown Source)
at com.borland.dx.sql.dataset.l.b(Unknown Source)
at com.borland.dx.sql.dataset.QueryResolver.insertRow (Unknown Source)
at com.borland.dx.sql.dataset.ResolutionManager.c(Unk nown Source)
at com.borland.dx.sql.dataset.ResolutionManager.d(Unk nown Source)
at com.borland.dx.sql.dataset.ResolutionManager.d(Unk nown Source)
at com.borland.dx.sql.dataset.ResolutionManager.saveC hanges(Unknown
Source)
at com.borland.dx.sql.dataset.ResolutionManager.saveC hanges(Unknown
Source)
at com.borland.dx.sql.dataset.Database.saveChanges(Un known Source)
at com.borland.dx.sql.dataset.QueryDataSet.saveChange s(Unknown Source)
at com.borland.dx.dataset.DataSet.saveChanges(Unknown Source)
at
com.borland.dbswing.JdbNavToolBar.actionPerformed( JdbNavToolBar.java:1799)
at
javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:1450)
at
javax.swing.AbstractButton$ForwardActionEvents.act ionPerformed(AbstractButton.java:1504)
at
javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:378)
at
javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:250)
at
javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:216)
at
java.awt.AWTEventMulticaster.mouseReleased(AWTEven tMulticaster.java:230)
at
java.awt.AWTEventMulticaster.mouseReleased(AWTEven tMulticaster.java:230)
at java.awt.Component.processMouseEvent(Component.jav a:3715)
at java.awt.Component.processEvent(Component.java:354 4)
at java.awt.Container.processEvent(Container.java:116 4)
at java.awt.Component.dispatchEventImpl(Component.jav a:2593)
at java.awt.Container.dispatchEventImpl(Container.jav a:1213)
at java.awt.Component.dispatchEvent(Component.java:24 97)
at
java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:2451)
at
java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:2216)
at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:2125)
at java.awt.Container.dispatchEventImpl(Container.jav a:1200)
at java.awt.Window.dispatchEventImpl(Window.java:914)
at java.awt.Component.dispatchEvent(Component.java:24 97)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 339)
at
java.awt.EventDispatchThread.pumpOneEventForHierar chy(EventDispatchThread.java:131)
at
java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:98)
at
java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:85)

Was kann das sein?

Danke schonmal Gruß Dirk

BenderD
17-06-04, 12:37
Hallo,

SQL7008 deutet darauf hin, dass die Table
NRMR00 in der Lib VL01TNIC nicht journalisiert wird.

Abhilfe:
1. Table journalisieren (empfohlen!)
2. Isolation Level auf NO_COMMIT stellen, entweder über die Connection, oder per Driver Properties beim Connect (Workaround)

mfg

Dieter Bender

nichterwitz
17-06-04, 13:20
Hi

SQL7008 deutet darauf hin, dass die Table
NRMR00 in der Lib VL01TNIC nicht journalisiert wird.

Abhilfe:
1. Table journalisieren (empfohlen!)
2. Isolation Level auf NO_COMMIT stellen, entweder über die Connection, oder per Driver Properties beim Connect (Workaround)

Ok ich bin da noch nicht so der Held.
1. Table journalisieren? Ist das Java Geschichte oder AS/400 ?
2. Selbe Frage AS/400 Sache?

Könntest mir vielleicht noch einen weiter Anstoss geben?

BenderD
17-06-04, 13:48
Hallo,

journalisieren ist AS400 Geschichte (CRTJRNRCV...CRTJRN... STRJRNPF)

isolation level ist Java Geschichte.
entweder setTransactionIsolation() der Connection bedienen siehe auch:
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Connection.html
oder property an die url anhängen
String url = "jdbc:as400://MyAs400/MyLib;transaction isolation=none";
verwenden

Dieter Bender

PS: Siehe auch meinen Beitrag im Midrange Magazin zu Connection Pooling; bzw. meinen Beitrag im TechKnowLetter zu den JDBC Treibern der AS400.

nichterwitz
17-06-04, 14:03
oder property an die url anhängen
String url = "jdbc:as400://MyAs400/MyLib;transaction isolation=none";
verwenden


Hab ich so probiert und funktioniert prima! Vielen vielen Dank