java - 如果我的数据库中没有任何要上传的图像怎么办?

标签 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());

最佳答案

您基本上有两种选择,一种是不提及并设置图像的列。这也最大限度地减少了语句并允许使用数据库默认值。

另一个选项是显式地将列绑定(bind)设置为 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 都可以。

关于java - 如果我的数据库中没有任何要上传的图像怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54382500/

相关文章:

mysql - BEGIN;COMMIT; 的替代方案因为事务会影响我使用 LAST_INSERT_ID() 的能力吗?

java - Eclipselink 合并/保留连接的对象

c++ - 在 STL 映射中,使用 map::insert 比使用 [] 更好吗?

java - 如何在java中存储列表中匹配的元素

Java设计: Decouple JNI Library

java - 如何制作一个将打开计算器应用程序 "X"次的 Java 程序

mysql - 如果从顶部开始相同,如何隐藏/删除行中的数据

php - 通过php将csv从mysql保存到服务器

Java数组没有保持初始化

php - MySQL INSERT else 如果存在 UPDATE