数据库存储图片 Blod格式

  一般情况下 我们存取图片在数据库都是存一个地址 但是今天接触到一个 直接把二进制的图片存在数据库的问题当然是顺利解决了 所有咋这里做一个总结框架背景 是spring hibernate一下是要注意的几点1》建表的时候A.类型是 blod 格式 要有默认值 (后面代码里会讲到默认值的作用)B.实体类是对应的blod类型是byte2》就是在存储的时候要注意 ...
摘要由CSDN通过智能技术生成

  一般情况下 我们存取图片在数据库都是存一个地址 但是今天接触到一个 直接把二进制的图片存在数据库的问题 

当然是顺利解决了 所有咋这里做一个总结 

框架背景 是spring hibernate

一下是要注意的几点

1》建表的时候

A.类型是 blod 格式 要有默认值 (后面代码里会讲到默认值的作用)

B.实体类是对应的blod类型是byte

2》就是在存储的时候要注意 写三条sql

第一条 sql

insert into Test_Img(id,msg,user_Id) values ('f018469a-b9bb-4081-8d23-4aba14b80f41','测试数据','0991-4849655')

不要set这个byte类型的字段 其余的都先添加进去 因为这个byte的字段要单独的set进去那就是要涉及到第二条sql sql先看一下第二条sql

第二条 sql

select img from Test_Img where id = 'f018469a-b9bb-4081-8d23-4aba14b80f41' FOR UPDATE

这条sql主要的作用的查到这条数据  FOR UPDATE的意思是锁定这张表 (在锁定之后其他用户是不能操作这张表的 这也是这个方法的弊端)

我现在把前提工作做完之后开始要写入数据了  

第三条 sql

update Test_Img set img=? where id = 'f018469a-b9bb-4081-8d23-4aba14b80f41'

光有sql还不ok 还要有 一些图 (这里不做多的解释 下面会有代码  其中用到的Util.getSc(tsetImg.getId()  也会有)

这样就顺利的存储完成了 

下面是详细的代码 :

Util.getSc的工具类 (这个方法我也没有仔细的研究i  别人写的我直接拿来用的 )

 1 static public String getSqlPlaceCh(String str) {
   // 将查询字串里的'用‘’代替,并且输出加引号的字串
 2         // return str.replaceAll(".*([';]+|(--)+).*", " ");    
 3         if (str == null || str.length() == 0)
 4             return null;
 5         StringBuffer sb = new StringBuffer(str.length());
 6         for (int i = 0; i < str.length(); i++) {
 7             switch (str.charAt(i)) {
 8             case '\'':
 9                 sb.append("\'\'");
10                 break;
11             /*
12              * case'\"': sb.append("\\\""); break; case'\\': sb.append("\\\\");
13              * break;
14              */
15             default:
16                 sb.append(str.charAt(i));
17                 break;
18             }
19         }
20         String result = sb.toString();
21         return "\'" + result + "\'";
22     }

实体类:

 1 import java.sql.Blob;
 2 
 3 public class TestImg {
 4     
 5
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值