当我没有要上载的图像时,我希望数据库中的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());
答案 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都可以。