快速业务通道

JDBC中操作Blob、Clob等对象 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
ldquo;1.JPG”文件加载为一个流, //用于后面向数据库中写入Blob字段 File file2 = new File("c:\\11\\1.JPG"); int len2 = (int) file2.length(); InputStream fis2 = new FileInputStream(file2); //以上两个简单吧!! //创建一个PreparedStatement对象,用于批量插入内容 //使用PreparedStatement对象可以节省,数据库编译SQL指令的时间, //因为在使用PreparedStatement对象时,该SQL语句是预先编译好了, //对于某些变化的参数使用占位符(Place Holder)代替 //这对于以后将要执行多次的同一操作,该操作仅仅是参数不同,是极其有利 //比如在网页上输入客户信息时,用户要填入的数据基本是一样的(你可以填也可以不填) //这时后台的数据库可以使用PreparedStatement对象,每次都是设置参数,执行操作 PreparedStatement ps = conn.prepareStatement("INSERT INTO documents VALUES (?, ?,?)"); ps.setInt(1, 250); ps.setAsciiStream(2, fis1, len1); ps.setBinaryStream(3,fis2,len2); //以上三步是设置占位符的数值 ps.execute(); //执行操作 //以上四步可以重复执行。PreparedStatement就是为了适用于此用途 conn.commit(); //以上完成了数据的写入 //以下是数据的读出 ResultSet rs = s.executeQuery("SELECT text , photo FROM documents WHERE id = 250"); while (rs.next()) { Clob aclob = rs.getClob(1); //和提取一般对象一样 InputStream is = rs.getAsciiStream(1); //特殊的,对于与得到Clob的流 //这是得到Clob、Blob流的第一种方法 3 //以下是对流进行处理的过程。Clob本身是包含大字符的对象 //顺其自然,以下是使用java IO中读取字符流的方法读取它 BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = null ; while(null != (line = br.readLine())){ System.out.println(line); //将其输出至屏幕,实际你可以按照需要处理 } is.close(); java.sql.Blob ablob = rs.getBlob(2); //和操作其它基本类型的字段一样 System.out.println(ablob.length()); //简单地操作Blob的实例 //实际你可以使用Clob的API对其进行任何它允许的操作,请查API InputStream bis = ablob.getBinaryStream() ; //得到Blob实例的字节流 //这是操作Clob、Blob等对象的第二种方法,也是最自然的用法 OutputStream os = new FileOutputStream("11.jpg"); //用于将数据库中的Blob存放到目前目录的“11.jpg”文件中 int b = bis.read(); //以下就是象操作其它java字节流一样操作了 while (b != -1 ) { os.write((char)b); b = bis.read(); } os.flush(); os.close(); bis.close(); } } catch (Exception e) { System.out.println("Error! "+e); } } }

简单吧!实际上写入Blob和Clob对象时一般只能使用PreparedStatement对象,一般使用其setXXXStream写入流。写就是这么简单!看完了,研究一下API吧!读出时一般通过getClob()、getBlob()方法,和其它提取基本数据类型字段的方法完全相同,接着你就可以得到此Clob、Blob实例的流了,有了流就可以象处理其它流一样处理这些流了!

简单吧!关键是一定要对基本流程了解!对其原来了解!对什么IO、net、Collections….基础知识必须精通!

运行的结果是本程序的源代码会存储在数据库中,同时会在屏幕上显式,源代码目录的子目录“11”下的1.jpg会存储到数据库中,同时也会在当前目录下有一个该文件的副本。(图片的相对位置一定要搞对哦!)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号