ERLEDIGT
NEIN
NEIN
ANTWORTEN
24
24
ZUGRIFFE
800
800
EMPFEHLEN
-
25.06.07 10:13 #1
- Registriert seit
- Jun 2007
- Ort
- Essen
- Beiträge
- 16
Kriege den fehler ArrayIndexOutOfBounds sobald in meiner CSV Datei eine Zeile mit einem ; endet, solange es nicht am ende der Zeile ist können auch ;; ohne fehler vorkommen.
Eine Lösung wie man dass lösen könnte wäre nicht verkehrt
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
BufferedReader Datei = new BufferedReader(new FileReader("C:\\Documents and Settings\\Paul\\Desktop\\Script\\test.csv")); zeile = Datei.readLine(); while (zeile != null) { if(zeile.contains(";")) { String[] daten = zeile.split(";"); } else if(zeile.contains(",")) { String[] daten = zeile.split(","); } else { System.out.println("File in wrong format! \n" + "The file must be delimited with \";\" or \",\"!"); } zeile = Datei.readLine(); //.... //SQL STATEMENTS String SqlUpdate = "Update `stundenplan` SET Stunde = '"+daten[0]+"', Montag = '"+daten[1]+"', Dienstag = '"+daten[2]+"', Mittwoch = '"+daten[3]+"', Donnerstag = '"+daten[4]+"', Freitag = '"+daten[5]+"' WHERE Stunde = '"+daten[0]+"' "; String SqlSelect = "SELECT Stunde FROM `stundenplan` WHERE Stunde = '"+daten[0]+"' "; String SqlInsert = "INSERT INTO `stundenplan` (Stunde, Montag, Dienstag, Mittwoch, Donnerstag, Freitag) VALUES ('"+daten[0]+"', '"+daten[1]+"', '"+daten[2]+"', '"+daten[3]+"', '"+daten[4]+"', '"+daten[5]+"') "; //SQL STATEMENTS
-
25.06.07 10:17 #2
- Registriert seit
- May 2007
- Ort
- Neuss
- Beiträge
- 74
Hi
in welcher Zeile passiert denn der Fehler?
Mein Verdacht ist, dass du daten[5] über das Array hinausschiesst!
MfG djjada
-
25.06.07 10:23 #3
- Registriert seit
- Jun 2007
- Ort
- Essen
- Beiträge
- 16
die zeile gibt groovy leider nicht an ...
der verdacht ist schon nicht verkehrt, da es ja beim letzten ; der fehler auftritt, die frage ist nur wie ich es schaffen kann das zu umgehen bei dem split hört er ja scheinbar bei dem letzten ; auf und setzt die daten[5] nicht auf leer bzw. legt den garnicht erst an :/
-
25.06.07 10:36 #4
- Registriert seit
- Aug 2006
- Ort
- Europe - Germany - Mainz
- Beiträge
- 296
Hallo Dark,
das Problem ist, das Du davon ausgehst, das fünf mal das Semikolon in einer Zeile ist und jeweils davor und dahinter Text steht. In diesem Falle funktioniert Dein Programm theoretisch einwandfrei. Steht aber hinter dem letzten Semikolon kein Text kommt es zu eben jenem Fehler.
Die Frage ist halt, was soll passieren, wenn die Zeile quasi zu "kurz" ist? Soll danach einfach das SQL-Update ausgelassen werden oder soll es angepasst werden?
gruß klaus.
-
25.06.07 10:38 #5
- Registriert seit
- Jun 2007
- Ort
- Essen
- Beiträge
- 16
Das Programm sollte in dem Fall quasi einen leer string bzw null eintragen, das Feld muss aber auf jedenfall weiterhin berücksichtigt werden.
-
25.06.07 10:44 #6
- Registriert seit
- Aug 2006
- Ort
- Europe - Germany - Mainz
- Beiträge
- 296
Hallo,
dann mach es doch einfach als if-Abfrage:
Code :1 2 3 4 5 6 7 8 9
if(daten.length == 6) { String SqlUpdate = "Update `stundenplan` SET Stunde = '"+daten[0]+"', Montag = '"+daten[1]+"', Dienstag = '"+daten[2]+"', Mittwoch = '"+daten[3]+"', Donnerstag = '"+daten[4]+"', Freitag = ' ' WHERE Stunde = '"+daten[0]+"' "; String SqlSelect = "SELECT Stunde FROM `stundenplan` WHERE Stunde = '"+daten[0]+"' "; String SqlInsert = "INSERT INTO `stundenplan` (Stunde, Montag, Dienstag, Mittwoch, Donnerstag, Freitag) VALUES ('"+daten[0]+"', '"+daten[1]+"', '"+daten[2]+"', '"+daten[3]+"', '"+daten[4]+"', ' ') "; } else { String SqlUpdate = "Update `stundenplan` SET Stunde = '"+daten[0]+"', Montag = '"+daten[1]+"', Dienstag = '"+daten[2]+"', Mittwoch = '"+daten[3]+"', Donnerstag = '"+daten[4]+"', Freitag = '"+daten[5]+"' WHERE Stunde = '"+daten[0]+"' "; String SqlSelect = "SELECT Stunde FROM `stundenplan` WHERE Stunde = '"+daten[0]+"' "; String SqlInsert = "INSERT INTO `stundenplan` (Stunde, Montag, Dienstag, Mittwoch, Donnerstag, Freitag) VALUES ('"+daten[0]+"', '"+daten[1]+"', '"+daten[2]+"', '"+daten[3]+"', '"+daten[4]+"', ' ') "; }
gruß klaus.
-
Hallo,
du könntest es dann so lösen
Code :1 2 3 4 5 6 7 8 9
String[] tmp = new String[6]; if(daten.length < 6) for(int i = 0; i < daten.length; i++){ tmp[i] = daten[i]; } daten = tmp;
Also das müsstest du vor dem SQL-Statement ausführen.
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
25.06.07 10:49 #8
- Registriert seit
- Jun 2007
- Ort
- Essen
- Beiträge
- 16
Ja, danke werd das mal direkt einbauen/umbauen
-
25.06.07 10:49 #9
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 905
Oder benutze eine CSV Lib z.B. opencsv
Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
-
Ich sehe gerade, da hab ich noch Klammern vergessen. Das kommt davon wenn man das direkt hier schreibt.

Code :1 2 3 4 5 6 7 8 9 10
String[] tmp = new String[6]; if(daten.length < 6){ for(int i = 0; i < daten.length; i++){ tmp[i] = daten[i]; } daten = tmp; }
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
25.06.07 11:40 #11
- Registriert seit
- Jun 2007
- Ort
- Essen
- Beiträge
- 16
Die idee mit der CSV Lib war genial
ersparrt einiges an code 
die anderen vorschläge wären aber auch eine alternative gewesen
danke
-
25.06.07 14:54 #12
- Registriert seit
- Jun 2007
- Ort
- Essen
- Beiträge
- 16
Mal ne frage zum der Lib.
Exception occurred during event dispatching:
java.lang.OutOfMemoryError: Java heap space
Exception occurred during event dispatching:
java.lang.OutOfMemoryError: Java heap space
diese Fehlermeldung bekomme ich wenn ich versuch meine eigenen seperatoren zu setzen.... kannst du mir sagen woran es liegt?
Code :1
CSVReader Datei = new CSVReader(new FileReader("C:\\Documents and Settings\\Paul\\Desktop\\Script\\test.csv"), ';');
-
25.06.07 15:11 #13
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 905
java.lang.OutOfMemoryError: Java heap space
Dein java Heap Speicher geht dir aus...dieser ist standardmässig maximal 64MiByte, den kannst du mittels eines Java VM Parameters leicht erhöhen: -Xmx128Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
-
25.06.07 15:14 #14
- Registriert seit
- Jun 2007
- Ort
- Essen
- Beiträge
- 16
-
Also das mit dem Speicher erhöhen sollte meiner Meinung nach der letzte Ausweg sein, da man es auch immer explizit angeben muss.
Normal ist es nicht wenn dein Programm nicht sehr groß ist. Ich würde sagen, dass du irgendwo viele Objecte erzeugst die den Speicher zum Überlaufen bringen.
Vielleicht solltest du mal den Code posten, wenn es möglich ist.
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
Ähnliche Themen
-
ArrayIndexOutOfBounds bei TabelSorter
Von Juri Schlönz im Forum JavaAntworten: 6Letzter Beitrag: 21.08.06, 10:31 -
ArrayIndexOutOfBounds
Von FBIagent im Forum JavaAntworten: 4Letzter Beitrag: 23.05.06, 14:30





Zitieren


? ich mein das programm ist relativ klein, ebenso die csv die hat gerade mal 5 einträge mit 6 spalten .... die richtige csv wird nachher über 2k einträge haben O.o
Login





