快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

JDBC中操作Blob、Clob等对象

时间:2011-03-23 缪小东

很多网友都不知道JDBC中如何操作Blob、Clob等对象,其实这是不难的!操作这些对象就象操作其它String、int一样。不信!你就看下面的文章。下面的例子会带你首先创建包含Clob、Blob对象的数据库的表,然后写入这些对象,最后再读取并操作这些对象!

一、关于Derby

www.open-open.com是这样介绍Derby的“Apache Derby 是一种高质量的、纯 Java™ 的嵌入式关系数据库引擎,IBM® 最近已将其捐献给开放源码社区。Derby 数据库基于文件系统,具有高度的可移植性,并且是轻量级的,这使得它非常便于发布。”据说它的源代码价值几十亿美元哦!我一般使用Derby,因为使用它可以很多其它开源数据库不能完成的操作,它是一个与JDBC标准完全兼容的数据库产品,再说它是IT界泰斗IBM的开源项目,能不去好好研究,多多学习吗?!

下载该软件你可以去www.open-open.com、www.sourceforge.net。下载下来后将其db-derby-10.XXXX-lib.zip解压放到一个目录下(看到了吧,基本都是jar文件,我放在c:\Derby目录中),同时让你的classpath中包含derby.jar文件,这样我们就可以在程序中使用该库了!

简单讲述path和classpath吧!设置path的目的是:当你使用java、javac、rmic命令时系统会到指定的path下查找这些.exe或.com文件然后执行它,我们要使用java中的这些工具,当然在path环境变量中要包含它们所在的目录了。classpath也差不多,当你在java中要调用其它已经有的类时,必须包含该类所在的目录,这样就可以调用了!例如在使用javac编译servlet时,sun提供的servlet的包必须在你的classpath中。

下面就开始我们的例子吧!

二、一个简单例子

本例中先创建一个包含Blob和Clob对象的数据库的表,然后向此表中写入Blob和Clob对象,最后再将这些数据库表中的数据读出并处理。其中使用了PreparedStatement对象、运用了一些和IO相关的知识。我们在此程序里使用了两种流的处理方式。下面是源代码:

import java.io.*; import java.sql.*; public class BlobClobExample { public static void main(String[] args) { try { String url = "jdbc:derby:clobberyclob;create=true"; //Derby中的URL,后面是附加参数。表示数据库中没有此数据库时,会自动建一个 //其它数据库提供商的产品可以查阅其手册 Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); //加载驱动。关于加载驱动的细节,请阅读本博客的《JDBC中驱动加载的过程分析(上)》 //和《JDBC中驱动加载的过程分析(下)》 //在数据库Mysql的驱动加载时也建议在Class.forName()后,继续调用newInstance()方法 2 //没有本质区别 Connection conn = DriverManager.getConnection(url); //建立连接 Statement s = conn.createStatement(); //创建Statement对象 s.executeUpdate("drop table documents"); //这句是为了避免再次创建表documents s.executeUpdate("CREATE TABLE documents(id INT, text CLOB(64 K) , photo Blob(1440 K))"); //以上就是创建包含Clob和Blob对象的表的过程 //和将一般的字段差不多,后面括号中代表该对象的大小,其语法为: // CLOB (length [{{K |M |G}]) 表示长度为K、M、G等,没有带表示比特 conn.commit(); //提交操作 //以下是将本地文件中,本程序的源文件加载为一个流,用于向数据库中写入Clob字段 File file1 = new File("BlobClobExample.java"); int len1 = (int) file1.length(); InputStream fis1 = new java.io.FileInputStream(file1); //以下是将当前源代码目录的子目录“11”下的&

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号