Setting blob to null using PreparedStatement

I am creating a web application using JSF2.0, where in mysql I store images using a data type like MEDIUMBLOB .

To insert values, I use PreparedStatement as shown below.

 PreparedStatement psmnt = con.prepareStatement("INSERT INTO sketchesSG002003 (userid, imageTitle, imageData, drawingComments) VALUES (?,?,?,?)"); psmnt.setLong(1, personalInfoId); psmnt.setString(2, sketchesSG002003Title); try { String fileName = FilenameUtils.getName(sketchesSG002003ImageUpload.getName()); File image = new File(fileName); InputStream fis = sketchesSG002003ImageUpload.getInputStream(); psmnt.setBinaryStream(3, fis, (int) sketchesSG002003ImageUpload.getSize()); } catch (Exception e) { psmnt.setBinaryStream(3, null); } psmnt.setString(4, sketchesSG002003Comments); i = psmnt.executeUpdate(); 

However, I get an error like

 java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V 

Some Stacktrace Part

  javax.faces.el.EvaluationException: java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) at javax.faces.component.UICommand.broadcast(UICommand.java:315) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 

I believe the error above is for the psmnt.setBinaryStream(3, null); operator psmnt.setBinaryStream(3, null);

My question is: how to set binary data as Null or Nothing?

+4
source share
1 answer

What is happening these days? I get a solution after I ask a question :(

psmnt.setNull(3, java.sql.Types.BLOB); did the trick.

+5
source

All Articles