-
[Dringend][JT400,JDBC] Insert bricht mit 'Cursor state not valid' ab.
Hallo,
ich versuche hier in eine Tabelle zu schreiben. Aber obwohl der Insert-String sowohl syntaktisch Korrekt ist und von den Feldern her auch passt, kann ich nicht schreiben und erhalte nur die Fehlermeldung "Cursor state not valid"
Wo liegt hier das Problem? Die Datenbankdatei wurde von mir erstellt und der zugriff erfolgt auch durch meinen user.
Vielen Dank für die Hilfe,
LoCal
-
Hallo,
Cursor state not valid deutet normalerweise auf einen Fehler in der Applikation hin, ohne Source geht da für uns garnix.
mfg
Dieter Bender
Zitat von LoCal
Hallo,
ich versuche hier in eine Tabelle zu schreiben. Aber obwohl der Insert-String sowohl syntaktisch Korrekt ist und von den Feldern her auch passt, kann ich nicht schreiben und erhalte nur die Fehlermeldung "Cursor state not valid"
Wo liegt hier das Problem? Die Datenbankdatei wurde von mir erstellt und der zugriff erfolgt auch durch meinen user.
Vielen Dank für die Hilfe,
LoCal
-
Zitat von BenderD
Hallo,
Cursor state not valid deutet normalerweise auf einen Fehler in der Applikation hin, ohne Source geht da für uns garnix.
mfg
Dieter Bender
Also den ganzen Quellcode kann ich logischerweise nicht posten.. darum poste ich mal das was ich in die engere Wahl ziehen.
Ich habe mir mal schon vor längerer Zeit einen Klasse gemacht, die ich für den Zugriff auf versch. Datenbanken nutzen kann.
Die Methode die fürs executes zuständig sieht wie folgt aus:
Code:
public void command(String sqlcmd) {
try {
java.sql.Statement st = c.createStatement();
st.executeQuery(sqlcmd);
st = null;
} catch (SQLException e) {
//Exception Handling
}
}
Die, in der ich dann den Insert-String erstelle:
Code:
private void erstelleSQLStrings() {
sqlStatements = new LinkedList();
LinkedList sqlSatz = null;
SQLElement tmp = null;
for(int i = 0;i<Stat_vars.sqlSaetze.size();i++) {
insertInto = new StringBuffer();
values = new StringBuffer();
sqlSatz = (LinkedList)Stat_vars.sqlSaetze.get(i);
for(int j=0;j<sqlSatz.size();j++) {
tmp = (SQLElement)sqlSatz.get(j);
insertInto.append(tmp.getFeld()+", ");
values.append(tmp.getWert()+", ");
}
sqlStatements.add((new String("INSERT INTO "+
+Stat_vars.ZIELDATEI +" ("+insertInto.substring(0,insertInto.length()-2) +
") VALUES(" + values.substring(0,values.length()-2) + ")")));
}
Diese Methode übernimmt dann quasi das eintrage:
Code:
private void verarbeiteSQLStrings() {
Stat_vars.verbindeDB();
for(int i=0;i
Und der daraus erzeugte SQL-String sieht wie folgt aus:
Code:
INSERT INTO GB311S (GLSS01, GLSS02, GLSS03, GLSS04, GLSS05, GLSS06, GLSS07, GLSS08, GLSS09, GLSS10, GLSS11) VALUES(85203879005, 20041208, 8500, 2011, 20041208, 0000, 'Müller', 51047, '3SPS80644954-001', '0', 'NixName')
Wie gesagt in Sachen Feldtypen passt alles.
Achja.. die von mir erwähnte Datenbankklasse ist ein statisches Object.
Wie gesagt, das sind die "betroffenen" Teile.
-
Zitat von BenderD
Hallo,
Cursor state not valid deutet normalerweise auf einen Fehler in der Applikation hin, ohne Source geht da für uns garnix.
mfg
Dieter Bender
Hmm.. noch ne kleine Nachfrage:
Also die Nachricht kommt ja von der "SQLException" und die bezieht sich ja quasi nur auf den SQL-String.
Was halt also der eigentliche Quellcode damit zu tun?
-
Zitat von LoCal
Hmm.. noch ne kleine Nachfrage:
Also die Nachricht kommt ja von der "SQLException" und die bezieht sich ja quasi nur auf den SQL-String.
Was halt also der eigentliche Quellcode damit zu tun?
Hallo,
ich fange mal mit dem obigen an: Cursor state not valid deutet auf einen Folgefehler - z.B.: ein resultSet wird geschlossen und dann kommt Cursor state not valid beim next(). Auf deinen Fehler bezogen würde man diese Meldung erwarten, wenn man über ien ResultSet einfügt, was nicht der Fall ist, was ich aber ohne Quellcode nicht sehe.
Bist du sicher, dass der Fehler beim Insert auftritt, oder könnte das nicht eins später sein?
Bist du sicher, dass dein Statement lokale Variable ist?
Ein Statement kann nämlich nur ein ResultSet und ein vorhandenes wird beim re execute geschlossen.
Läuft das ganze im Multithreaded Umfeld? (Servlet, EJB o.ä.)
mfg
Dieter Bender
-
Hallo,
erstmal danke für die schnelle antwort. Also das mit dem String und seiner Übergabe bis zum "Ziel" passt. Das habe ich per debuggin verfolgt.
Mittlerweile nehm ich auch nicht mehr executeQuery() (weiss selbst nicht warum ich das genommen habe), sondern executeUpdate() das liefert ja kein ResultSet zurück.
Und es läuft auch ohne Exception-wurf durch, aber eingetragen werden die Daten immer noch nicht.
Ich werde am Montag alles noch mal genau duruchchecken und nochmal hier rein posten.. die dringlichkeit is erstmal nicht mehr gegeben ...
für jetzt schonmal vielen Dank und schönes Wochenende.
-
So, habe nochmal alles soweit durchgesehen... also von der CodeSeite her passt es. Also das Problem liegt wohl auf der Maschinenseite. Die Datei hatte ich mit "Super-Base" erstellt.
Werden eventuelle JDBC-Zugriffsprobleme auf der AS/400 irgendwo geloggt?
-
Hallo LoCal,
log ist das Joblog des Database Server Jobs, aber da findest du auch nur Cursorstate not valid. Pack doch mal den Code, von dem du glaubst, dass er nicht funktioniert in ein kleines main; mit genau einem insert und dann poste mal diesen Code und die genaue Fehlermeldung, wenn es denn wirklich nicht funzt.
Dieter Bender
Zitat von LoCal
So, habe nochmal alles soweit durchgesehen... also von der CodeSeite her passt es. Also das Problem liegt wohl auf der Maschinenseite. Die Datei hatte ich mit "Super-Base" erstellt.
Werden eventuelle JDBC-Zugriffsprobleme auf der AS/400 irgendwo geloggt?
-
Okie.. es war ein Programm-fehler.
Ich habe die Klasse, die ich mir mal für Datenbankzugriffe geschrieben habe, statisch geladen. Nun greift die zu erst auf eine Datei in Bibliothek A zu und die zu manipulirende Datei ist in Bibl. B.
Wenn ich nun über die schon vorhandene Instanz der Datenbankzugriffsklasse arbeiten will geht nix.
Ich habe jetzt noch eine eigene Instanz erstellt und nun gehts.
Is zwar nicht so nach meinem Geschmack, aber vorerst bleibt es so weil es funzt.
Danke nochmal für die Hilfe.
LoCal
Similar Threads
-
By M.Kasper in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 25-08-06, 07:32
-
By deni87991 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 04-08-06, 10:32
-
By woki in forum NEWSboard Java
Antworten: 3
Letzter Beitrag: 06-06-06, 15:57
-
By Deficiency in forum NEWSboard Java
Antworten: 0
Letzter Beitrag: 01-12-05, 12:40
-
By woki in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 13-04-04, 12:09
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks