大数据Blob Clob在Mysql与oracle写入问题

本文介绍了在遇到MySQL写入图片时出现乱码问题的解决方法,探讨了不同数据库如MYSQL和Oracle中如何处理Blob类型的数据。通过提供五种不同的方法,包括直接使用PreparedStatement.setBlob(),插入空blob后再写入,以及锁定行和利用BLOB.getBinaryOutputStream()进行写入等,来解决大数据写入的挑战。
摘要由CSDN通过智能技术生成

写在前面

写这片文章是缘于在网上看到几篇关于在MYSQL写入图片遇到乱码时的问题,刚好最近在写相关的代码,就列出几个解决的方法(虽然现实中是很少直接写入图片这种大数据的,但各数据库厂商在技术上是完全可以实现的.

打开数据库

String dbType="mysql.";
		Properties pros=new Properties();
		pros.load(new FileInputStream("src/db.properties"));
		Class.forName(pros.getProperty(dbType.concat(DRIVER)));
		Connection conn=DriverManager.getConnection(
				pros.getProperty(dbType.concat(URL)),pros.getProperty(dbType.concat(USERNAME)),pros.getProperty(dbType.concat(PASSWORD)));
		PreparedStatement pstmt=conn.prepareStatement("update dummy set image=? where username=?");


方法一

在原文无出现乱码情况下,是可以直接将输入流传入PreparedStatement.setBlob(index,inputStream)的.

FileInputStream fis=new FileInputStream(file);
pstmt.setBlob(1, fis);

下面开始主题,在出现乱码情况:

方法二

创建一个空的blob,并将输入流写入blob,这也是spring源码的方法之一,关于inputStream写到outputStream,我们还可以使用spring的org.springframework.util.FileCopyUtils.copy(input,output)代替,还可以省去流的关闭操作.
并且,该方法是在不出现写入乱码情况下是可以通用的,但在oracle下有点区别:
如果使用的ojdbc14.jar时,需用oracle自定义的BLOB(大写)创建一个空的blob,而不能用Connection,oracle的Connection实现类是没有createBlob()方法的.
如果使用ojdbc6.jar的话,则
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值