установка BLOB-объекта на ноль с помощью PreparedStatement
Я создаю веб-приложение, используя JSF2.0, где в MySQL я храню изображения, используя тип данных, какMEDIUMBLOB
.
Чтобы вставить значения, я использую PreparedStatement, как показано ниже.
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();
Однако я получаю ошибку как
java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;)V
Некоторая часть Stacktrace
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)
Я считаю, что выше ошибка для заявленияpsmnt.setBinaryStream(3, null);
My question is how can I set binary data as Null or Nothing?