当前位置: 首页 > 面试题库 >

使用PreparedStatement将blob设置为null

於乐语
2023-03-14
问题内容

我正在使用JSF2.0创建Web应用程序,其中在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); 做到了。



 类似资料:
  • 我正在使用mapstruct,我想知道是否有任何方法可以为某些目标属性设置空值。例如 我希望上面的源代码、dto和mapper能够生成下面的源代码,

  • 祝大家日安。 如何改变桌面的背景颜色时,聚焦?

  • 我在实体类中使用Spring Boot和Hibernate JPA,代码如下:, 其中生成了一个集合表user\u files。但是,默认的列类型是VARCHAR(255),有时用户数据可能比这更长。我的问题是如何定义此表以将BLOB或TEXT用于列?我试图在那里直接插入Lob注释,但没有成功。

  • 问题内容: 使用Zend_Db执行UPDATE和INSERT查询时,我经常需要设置等于NULL的值(不是”)。但是,Zend_Db :: insert()和Zend_Db :: update()的默认行为似乎是将空值转换为空字符串(’‘)并照此放入数据库。 有谁知道如果php中的值为空,则实际上强制将NULL值放入字段的方法吗? 问题答案: 尝试将受影响的字段设置为:

  • 我想在纯JS或jQuery上设置一个atribute onchange值。 元素名称: 我试过了 选择在div中,id=“butterbean-control-autofilling”,所以我可以使用吗?

  • 编辑2: 似乎调用实际上是在取消数据库中的字段!但是,调用并没有像预期的那样用空字段刷新POJO。我在之后验证了lastName的为null,但是调用没有使该值为null。