java - insert blob data in to database -
think have little problem code: when try insert in database value recived 1 error.
ps: try use :
setbinarystream(int parameterindex, inputstream x) - data read inputstream needed until end-of-file reached. added in jdbc 4.0 (java 1.6).
setbinarystream(int parameterindex, inputstream x, int length) - data read inputstream needed "length" bytes.
setbinarystream(int parameterindex, inputstream x, long length) - data read inputstream needed "length" bytes. added in jdbc 4.0 (java 1.6).
but everytime recived simple error. don t know doing ..... m code monkey...
this class:
public class dataservlet extends httpservlet{ public void dopost(httpservletrequest request,httpservletresponse response)throws servletexception,ioexception { connection conn = connectiontodb.connettidb(); inputstream inputstream = null; part filepart = request.getpart("image"); inputstream = filepart.getinputstream(); try{ string sql = "insert blob (data) values (?)"; preparedstatement statement = conn.preparestatement(sql); if (inputstream != null) { // fetches input stream of upload file blob column statement.setblob(1, inputstream); } // sends statement database server int row = statement.executeupdate(); if (row > 0) { system.out.println( "file uploaded , saved database"); } } catch (sqlexception ex) { system.out.println( "error: " + ex.getmessage()); ex.printstacktrace();} } }
this error message:
com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception: have error in sql syntax; check manual corresponds mysql server version right syntax use near 'blob (data) values (_binary'‰png \0\0\0 ihdr\0\0\0\0\0\0\0\0\0;0®¢\0\' @ line 1 @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(unknown source) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(unknown source) @ java.lang.reflect.constructor.newinstance(unknown source) @ com.mysql.jdbc.util.handlenewinstance(util.java:411) @ com.mysql.jdbc.util.getinstance(util.java:386) @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:1052) @ com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:3609) @ com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:3541) @ com.mysql.jdbc.mysqlio.sendcommand(mysqlio.java:2002) @ com.mysql.jdbc.mysqlio.sqlquerydirect(mysqlio.java:2163) @ com.mysql.jdbc.connectionimpl.execsql(connectionimpl.java:2624) @ com.mysql.jdbc.preparedstatement.executeinternal(preparedstatement.java:2127) @ com.mysql.jdbc.preparedstatement.executeupdate(preparedstatement.java:2427) @ com.mysql.jdbc.preparedstatement.executeupdate(preparedstatement.java:2345) @ com.mysql.jdbc.preparedstatement.executeupdate(preparedstatement.java:2330) @ com.cvmanagement.src.servlet.dataservlet.dopost(dataservlet.java:69) @ javax.servlet.http.httpservlet.service(httpservlet.java:646) @ javax.servlet.http.httpservlet.service(httpservlet.java:727) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:303) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:220) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:503) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:170) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103) @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:950) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:421) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1070) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:611) @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:314) @ java.util.concurrent.threadpoolexecutor.runworker(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source) @ org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61) @ java.lang.thread.run(unknown source)
my initial assessment bug in driver wrong. problem use of unquoted word blob
in query. blob
reserved word , therefor needs quoted when used object name.
i'd expect work if change query to:
string sql = "insert `blob` (data) values (?)";
Comments
Post a Comment