Avatar billede ladyhawke Novice
24. maj 2001 - 17:27 Der er 20 kommentarer og
1 løsning

java.lang.ArrayIndexOutOfBoundsException

Jeg får denne fejl når jeg vil indsætte et byte[] på ca. 200k i en MySQL DB. Hvordan undgår jeg denne fejl? Det må da være muligt at håndtere objekter i denne størrelse?

Avatar billede logical Nybegynder
24. maj 2001 - 17:29 #1
Nu skriver du jo rigtig meget vejledning.....

Hvordan undgår du denne fejl?
try { ... } catch

:-)
Avatar billede ladyhawke Novice
24. maj 2001 - 17:33 #2
Jeg bruger selvfølgelig try/catch, men jeg vil undgå at den overhovedet opstår...

Jeg har følgende:
byte[] data = new byte[ca. 200.000];
Avatar billede ladyhawke Novice
24. maj 2001 - 17:35 #3
Fortsat kommentar...

Jeg har:
byte[] data = new byte[ca. 200.000];

jeg vil gerne kunne:

pstmt.setBytes(3,data);
pstmt.setInt(1,Id1);
pstmt.setInt(2,Id2);
pstmt.execute();

Avatar billede ladyhawke Novice
24. maj 2001 - 17:36 #4
hvor pstmt er et preparedstatement...
Avatar billede logical Nybegynder
24. maj 2001 - 17:41 #5
I mine øjne er det specifikt til MySQL, jeg har ikke set det i f.eks. Oracle. Jeg ville prøve ude på usenet hvis jeg var dig.
Avatar billede ladyhawke Novice
24. maj 2001 - 17:45 #6
Det er ikke specifikt MySQL:

Hvis jeg laver et byte[] på mere end godt 65000, så får jeg den nævnte fejl, men MySQL kan godt håndtere det....
Avatar billede logical Nybegynder
24. maj 2001 - 17:51 #7
Ok, så melder jeg helt pas. Jeg har ikke nok til at kigge på prob. herfra
Avatar billede faceorbit Nybegynder
24. maj 2001 - 18:14 #8
Hvordan itererer du gennem dit byte[]?
Det lyder som om det er en java fejl
ikke en mySQL fejl
Avatar billede ladyhawke Novice
24. maj 2001 - 18:25 #9
jeg tror også det er en java fejl, men jeg kan ikke finde ud af hvorfor.

Jeg har prøvet med ByteArrayInputStream bais = new ByteArrayInputStream(data); for så at overføre denne, men det giver også fejl.

Jeg har prøvet direkte at bruge pstmt.SetBytes(data), men det du\'r heller ikke.

Jeg kan ikke forstå denne fejl for jeg kan læse data og få længden af samme uden problemer...
Avatar billede kama Nybegynder
24. maj 2001 - 21:49 #10
Prøv at se på:
http://www.eksperten.dk/spm/75263

Er det ikke noget lignende du har gang i?
Husk at datatypen i MySQL skal være longblob - plads til 16M!
Avatar billede lbhansen Nybegynder
24. maj 2001 - 22:11 #11
En blob lyder som en fornuftig ting at gemme den
slags data i, men hvor opstår din exception.

Stammer den fra din egen applikation, eller jdbc driveren?
Avatar billede ladyhawke Novice
25. maj 2001 - 10:08 #12
Mediumblob er stor nok og jeg kan ikke finde ud af om det er jdbc eller applikationen der giver fejlen, men det er sikkert jdbc, for data bufferen bliver håndteret flere steder i applikationen uden problemer....
Avatar billede mpultz Nybegynder
25. maj 2001 - 10:52 #13
Sagde du at du havde prøvet med PreparedStatement.setBinaryStream()?
Avatar billede ladyhawke Novice
25. maj 2001 - 10:58 #14
Ja, det har jeg prøvet... det giver stadig fejl..
Avatar billede delbing Nybegynder
25. maj 2001 - 11:08 #15
Har du kigget i dokumentationen til din driver? Hvilken driver bruger du? Måske har den en grænse på 64K?
Avatar billede ladyhawke Novice
25. maj 2001 - 11:12 #16
Dette er min jdbc driver: mm.mysql.jdbc-1.2c
Avatar billede mcphreak Nybegynder
25. maj 2001 - 12:11 #17
Hvad var det lige pstmt var for et objekt?
Avatar billede ladyhawke Novice
25. maj 2001 - 12:14 #18
pstmt: et preparedstatement som kan bruges når du skal lægge informationer ned i en SQL database (ikke nødvendigvis MySQL)
Avatar billede lbhansen Nybegynder
25. maj 2001 - 13:01 #19
Har du ikke mulighed for at lave
en
try{
  //do dit jdbc stuff
}catch( Throwable t ){
  t.printStackTrace();
}

Så kan du se hvor fejlen sker
Avatar billede ladyhawke Novice
25. maj 2001 - 13:01 #20
Nu er det endlig lykkedes. Jeg har ikke fundet ud af pæcis hvor problemet opstår, men hvis jeg pakker data til under 65k så har jeg ikke problemer med at lægge det i databasen, hverken i databasen eller Java.
Avatar billede ladyhawke Novice
25. maj 2001 - 13:03 #21
Jeg prøvede stacktrace, men det gave mig ikke oplysningerne nok til at finde problemet....

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester