JDBC大数据操作

1 篇文章 0 订阅
0 篇文章 0 订阅

大数据操作这里,主要是分为cblobblob两种类型数据的文件,前者主要存储一下长的字符串,后者主要通过二进制来存储一些图片、音频之类的,不过,在数据库中通常存的是图片或者视频的路径,很少存源文件。

1 clob 介绍

  链接数据库的操作在前面文章已经介绍过,下面不在重复

PreperdStatement pstmt = con.preparestatement(insert into table  values(?,?));

String str=要存入长字符串;

StringReader reader = new StringReader(str);

//StringReader这里运用这个方法主要是为了下面setCharacterStream方法服务,它的参数要求需要用到reader对象,StringReader方法主要是通过字符流的方式读取字符串

pstmt.setCharacterStream(index,reader,length),//1个参数主要是对应sql语句中的第几个问号,第二个参数就是前面创建的StringReader对象,第三个参数是reader的长度。

 

2  blob介绍

主要存储一些图片之类的文件,前提别忘了在数据库创建该类型的字段。

思想主要是:先创建一个字段用来存入图片,先把这个字段存入一个空数据(empty_blob()),然后更新它,更新为图片或者音频。

1, String sql  = (insert into table values(empty_blob()));

2, pstmt =con.preparedstatement(sql);

3,   pstmt.executeUpdate();

这就成功的向里面插入了一个空值。然后查询这个空值并且更新它

sql=(select * (blob字段名)  from table  where  id=(对应的ID值) for update(尤其重要))

pstmt = con.preparedstatement(sql);

ResultSet  rs = pstmt.executeQuery();

if(rs.next()){

  Bolob b = (Bolob)rs.getBlob(大数据字段名);

  OutPutStream os = b.setBinaryStream(1L);

  InPutStream is  = (当前类名).class.getResourceAsStream(图片路径或者音频路径);

Int len =0;

Byte [] temp = new Byte[1024];

10 while((len = is.read(temp))!=-1){

   os.write(temp,0,len);

os.flush();

11 }

12 con.commit();

13 }

这样便完成了对图片的存储。读取出来是把输入流,输出流相反着写。


这里在提一个小知识,利用存储过程来进行数据库的存储,主要是运用CallBableStatement类来进行操作的,但是由于这个是Oracle独有的,兼容性上面存在一些差异。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值