View Full Version : Java-Fehlermeldung: Descriptor index not valid.
Hallo
Seit ca. zwei Monaten übertrage ich für eine Schnittstelle den Inhalt einer Textdatei in eine Datei auf AS400, die nur aus EINEM Feld besteht, um diese Daten dort weiterzuverarbeiten.
Obwohl beide Seiten beteuern, nichts am Programm geändert zu haben, kommt seit Dienstag voriger Woche folgende Fehlermeldung:
Descriptor index not valid.
Ein konkreter Datensatz hat z.b. folgenden Inhalt:
AU0000289369002013061800160801SAM GmbH., Best.Nr.: 70047867 an Produktion übergeben KB Hr. Mosshammer Martin 20130619 2000 03000140400 Grundner Klaus nicht def. 00000000 0662/6588
Ich weiß mir keinen Rat mehr. Vor allem finde ich nicht schlüssig heraus, was die Fehlermeldung in diesem Zusammenhang wohl besagt
Vielen Dank im Voraus für eure Hilfe.
Dazu wäre die Codezeile, bei dem der Fehler auftritt nicht unwichtig.
Hallo,
eine Beschreibung wie Du die Daten importierst wäre
auch hilfreich.
Gruß
Michael
Auf die simpelste Weise erfolgt der Import:
Textdatei Zeile für Zeile durchlesen
--------------
// Datei mit dem betreffenden Namen Zeile für Zeile
// lesen den Inhalt jeder Zeile mit
// writeAS400ToDB(Zeileninhalt) verarbeiten
// Open the file for reading
PreparedStatement insert = null;
BufferedReader br = null;
try
{
br = new BufferedReader(new FileReader(file));
insert = m_connection
.prepareStatement(genInsertString(sTableName));
String line;
int lineNr = 1;
while ((line = br.readLine()) != null)
{ // while loop begins here
log.info(lineNr + ":" + line.trim());
insert.setString(1, line.trim());
insert.executeUpdate();
lineNr++;
} // end while
// end try
} catch (SQLException e)
{
log.error(e);
} catch (IOException e)
{
log.error(e);
} finally
{
try
{
if (br != null)
{
br.close();
}
if (insert != null)
{
insert.close();
}
} catch (Exception e)
{
log.error(e);
}
------
Insert-Anweisung generieren
------------
public String genInsertString(String sTableName)
{
StringBuffer sb = new StringBuffer();
sb.append("INSERT INTO ");
sb.append(sTableName);
sb.append(" (FELD) VALUES ('");
sb.append("?");
sb.append("')");
String query = sb.toString();
return query;
}
---------
Wie eine Zeile aussieht, habe ich ja vorhin gezeigt.
Also überhaupt nichts "Aufregendes"
HI,
da müssen aber noch weitere Fehlerhinweise vorhanden sein.
Java protokolliert wo die Exception stattgefunden hat.
... verwende mal Parameter Markers, der String könnte Dein SQL Statement kaputt machen (der sogenannte O'Hara Effekt).
D*B
Ich verwendet Parameter -Markers
Und was mich so irritiert. An der Klasse wurde nichts geändert?!?!
try
{
br = new BufferedReader(new FileReader(file));
log.info(lineNr + ":" + line.trim());
...
insert.setString(1, line.trim());
insert.executeUpdate();
...
lineNr++;
} // end while
// end try
An der Klasse muss was geändert worden sein:
sb.append(" (FELD) VALUES ('");
sb.append("?");
sb.append("')");
Parametermarker in Hochkomma ist eine Konstante!!!!
sb.append(" (FELD) VALUES (?)");
wäre korrekt.
HI,
warum eigenmtlich ein Javaprogramm.
Ein CPYFRMIMPF würde vielleicht auch funktionieren.
Gruß
Michael
In diesem Fall: nicht nur vielleicht :).