2011-05-04 2 views
0

내 코드는 다음과 같습니다ArrayIndexOutOfBoundsException가

psmnt = conn.prepareStatement("INSERT INTO upload_data(user_id,photo,audio) " + "values(?,?)"); 
psmnt.setLong(1, userId); 
fis = new FileInputStream(photoFile); 
psmnt.setBinaryStream(2, (InputStream) fis, (int) (photoFile.length())); 
fisAudio = new FileInputStream(audioFile); 
psmnt.setBinaryStream(3, (InputStream) fisAudio, (int) (audioFile.length())); 
int s = psmnt.executeUpdate(); 

MYSQL DB에서 type of audio이 방울

예외입니다 :

java.lang.ArrayIndexOutOfBoundsException: 2 
    at com.mysql.jdbc.PreparedStatement.setBinaryStream(PreparedStatement.java:2089) 
    at com.test.dao.TestDao.saveTestDetails1(TestDAo.java:154) 
    at com.test.servlet.UploadImage.doPost(UploadImage.java:131) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
    at java.lang.Thread.run(Unknown Source) 

방법이 reslove하는 ??

답변

2

을 (물음표) 귀하의 SQL 문에서하지만, 기존의가 아닌 3에 이진 스트림을 바인딩하려고합니다.

psmnt = conn.prepareStatement("INSERT INTO upload_data(user_id,photo,audio) " 
         + "values(?,?,?)"); 

fisAudio = new FileInputStream(audioFile); 
// you should bind something to the first and second ? marks too! 
psmnt.setLong(1, 12345L); 
psmnt.setString(2, "this is my photo"); 
psmnt.setBinaryStream(3, (InputStream) fisAudio, (int) (audioFile.length())); 
int s = psmnt.executeUpdate(); 
6

psmnt.setBinaryStream (3,

제니퍼 도와주세요, 당신은 세 번째 매개 변수를 설정하려는하지만 당신은 단지 당신의 삽입에 두 개의있다 : 당신은 두 개의 매개 변수가

psmnt = conn.prepareStatement("INSERT INTO upload_data(user_id,photo,audio) " 
         + "values(?,?)"); 
+0

+1 - 좋은 캐치 – MByD