正在回答 回答被采纳积分+1
你好!你可以试试下面的这段代码,这里是写了一个例子,从本地读的文件。如果是从网页上传的,可以写成byte[] b=item.get(); Blob blob=new SerialBlob(b); item.get()是获取的图片对应的二进制数组;还有三个类需要导入
import java.sql.Blob;
import javax.sql.rowset.serial.SerialBlob;
import javax.sql.rowset.serial.SerialException;
try { FileInputStream fis=new FileInputStream("1.png"); byte[] b=new byte[1024*30]; int n=fis.read(b); Blob blob=new SerialBlob(b); } catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } catch (SerialException e) { e.printStackTrace(); }catch (SQLException e) { e.printStackTrace(); }
另外,还是建议把代码中的Blob改成byte[] ,Blob就是对应二进制字节数组,这个也是开发中的常用方式,不用再额外进行转换。
在实体类中,smallImg字段改成byte[]类型
Blob在使用ResultSet的get方法获取数据时会用到,存储数据时一般还是用二进制字节数组。
祝学习愉快!
你好同学,二进制的字节数组就对应了数据库中的Blob,不用再转换,可以参考这个代码。下面代码中setSmallImg是Cake类的set方法,参数是二进制的字节数组,item是FileItem item的对象,item.get()就获取了图片的二进制流,是一个字节数组
祝学习愉快~
你好同学,你的研究方向不对哦,你可以向数据库中存储图片地址试试,这样不会影响数据库的存储性能的,祝学习愉快~
兄弟你可以看一下这个博客的实例代码,https://blog.csdn.net/weixin_39800144/article/details/80225990
其实Blob就是存储2进制数据的一个容器,你只要把文件转换成2进制就可以存储了,不过还是使用注解存储吧,注解的封装原理也是将文件转换成2进制。这样更方便。
- 参与学习 人
- 提交作业 277 份
- 解答问题 4297 个
Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星