Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用PreparedStatement将blob设置为null_Java_Mysql_Blob_Binarystream - Fatal编程技术网

Java 使用PreparedStatement将blob设置为null

Java 使用PreparedStatement将blob设置为null,java,mysql,blob,binarystream,Java,Mysql,Blob,Binarystream,我使用JSF2.0创建webapplication,在mysql中,我使用数据类型将图像存储为MEDIUMBLOB 要插入值,我使用PreparedStatement,如下所示 PreparedStatement psmnt = con.prepareStatement("INSERT INTO sketchesSG002003 (userid, imageTitle, imageData, drawingComments) VALUES (?,?,?,?)"); psmnt.setLong(1

我使用JSF2.0创建webapplication,在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)


我的问题是如何将二进制数据设置为Null或Nothing?

这些天出了什么问题?在我提出以下问题后,我得到了解决方案:(


psmnt.setNull(3,java.sql.Types.BLOB);
成功解决了这个问题。

这个问题与JSF无关。我知道,但是,当我使用该技术时,我认为应该包括它……没有其他东西……在这种情况下,LongBlob和普通BLOB有什么区别吗?