Java 在mysql中保存3gp文件时出现ArrayIndexOutOfBoundsException
我的代码是:Java 在mysql中保存3gp文件时出现ArrayIndexOutOfBoundsException,java,mysql,blob,Java,Mysql,Blob,我的代码是: 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())); fisAudi
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
中的音频类型是blob
例外情况是:
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)
怎么会喜欢这个??请帮助psmnt.setBinaryStream(3
Jennifer,您正在尝试设置第三个参数,但插入中只有两个参数:
psmnt = conn.prepareStatement("INSERT INTO upload_data(user_id,photo,audio) "
+ "values(?,?)");
您的SQL语句中只有两个参数(问号),但您正在尝试将二进制流绑定到第三个,而不是现有的参数。更改SQL语句如下:
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();