jdbc操作BLOB类型数据
下面对jdbc操作blob类型数据做个说明,网上很多的处理方式都是先插入一个空的blob数据,然后再锁定该记录执行更新操作,这样做太麻烦了,所以推荐用下面的方法来处理:
PreparedStatement pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
InputStream ins = (InputStream)obj ;//输入流
byte[] buf = new byte[ins.available()] ;
ins.read(buf) ;
pstmt.setBytes(i+1, buf) ;
然后ResultSet rs = pstmt.executeUpdate();
就这样就可以了,很简单的,其它细节方面就不说了,开始的时候用的pstmt.setBinaryStream(0, ins),但老是抛异常,最后没办法了,还是用数组吧,取出blob类型一样的,得到的也是一个流,然后操作流就好了。还有一个问题,就是在上传这些文件或图片的时候有的时候在上传的大于某个值后就不能上传了,而这个值不是你控制的,那么这个问题多半是jdbc驱动程序(ojdbc14.jar)的问题,网上说的是在oracle 9i中的驱动程序对blob类型的字段上传大小是有限定的,但10g后的就取消这个限定了,所以不管你是9i的还是10g的,都用10g以后的驱动包就不会出现文件过大而无法上传的问题了,附件中的这个驱动包就没有上传文件大小的限定。

本文介绍了一种简化JDBC操作BLOB类型数据的方法,避免了先插入空记录再更新的传统步骤。通过使用InputStream读取数据并转换为byte数组,直接设置到PreparedStatement中执行更新。此外,还讨论了解决上传文件过大时遇到的问题,建议使用Oracle 10g及之后版本的驱动程序。
510

被折叠的 条评论
为什么被折叠?



