如果我的数据库中没有要上传的图片怎么办?

时间:2019-01-26 20:34:35

标签: java mysql insert blob prepared-statement

当我没有要上载的图像时,我希望数据库中的Blob字段为NULL。 我正在使用JAVA-软件Netbeans。 我的数据库:MySQL

这是我的代码:

String s; //The path of the image

 InputStream is = new FileInputStream(new File(s));
 preparedStmt.setBinaryStream(24,is,(int)s.length());

1 个答案:

答案 0 :(得分:0)

基本上,您有两种选择,一种是不提及并设置图像列。这也使该语句最小化,并允许使用数据库默认值。

另一个选择是像这样将列绑定显式设置为null:

File f = new File(...);
If (f.exists()) {
    try (InputStream is = new FileInputStream(f);) {
        preparedStmt.setBinaryStream(24,is,f.length());
    }
} else
    preparedStmt.setNull(24, java.sql.Types.BLOB);

类型有点棘手,有些驱动程序会忽略它或接受范围很广,有些则很挑剔。例如,PostgreSQL不喜欢bytea列上的BLOB。我认为对于MySQL,BLOB甚至VARCHAR都可以。