JAVA学习网首页 把生活查询网加入收藏 把JAVA学习网设为首页 联系方式
    Hi,JAVA学习
JAVA基础 设计模式 数据库 JavaBeans J2EE JavaDelphi 用户界面 综合文章  
认识JDBC 2.0中的高级数据类型
时间:22/04/2007
作者:网络
来源:网络
小提示点这里把文章加入您的收藏夹,方便下次查看
设置文章字体大小:[ ]
  JDBC 2.0中提供了对SQL3标准中引入的新的数据类型,如Blob(binary large object)、Clob(character large object)、Array 对象、REF(对象参考,object reference)和 UDT(用户定义数据类型,user-defined datatype)等的支持。这些新的数据类型结合在一起,使得数据库设计人员可以创建更丰富的模式,并简化了对复杂数据的处理和持久化。


  例如,我们要向tbl_User表中插入用户的照片,这时就可以使用流将Blob对象导入数据库中:


String sql = "intsert into tbl_User values(?, ?)";
PreparedStatement pstmt = con.prepareStatement(sql) ;


File file = new File("C:/images/photo.jpg") ;
FileInputStream fis = new FileInputStream(file);


pstmt.setString(1, "John");
pstmt.setBinaryStream(2, fis, (int)file.length());


pstmt.executeUpdate();


pstmt.close();
fis.close();


  其中SQL语句的第一个参数为用户名,第二个参数为photo,它是一个Blob型对象。这样在将数据插入数据库之后,我们就可以用程序获取该数据了:


String sql = "select photo from tbl_User where username = ?";
PreparedStatement pstmt = con.prepareStatement(selectSQL) ;


pstmt.setString(1, "John");
ResultSet rs = pstmt.executeQuery() ;


rs.next();
Blob blob = rs.getBlob("photo") ;


ImageIcon icon = new ImageIcon(blob.getBytes(1, (int)blob.length())) ;
JLabel photo = new JLabel(icon);


rs.close();
pstmt.close();


  类似地,我们也可以对Clob对象进行相应的操作。下面是一个从 ASCII 流中直接将 Clob对象插入数据库中的例子:


String sql = "insert into tbl_Articles values(?,?)";
PreparedStatement pstmt = con.prepareStatement(sql) ;


File file = new File("C:/data/news.txt") ;
FileInputStream fis = new FileInputStream(file);


pstmt.setString(1, "Iraq War");
pstmt.setAsciiStream(2, fis, (int)file.length());


pstmt.executeUpdate();


pstmt.close();
fis.close();


  同样,我们也可以用类似的方法将Clob对象从数据库中取出:


String sql = "select content from tbl_Articles where title = ?";
PreparedStatement pstmt = con.prepareStatement(sql) ;


pstmt.setString(1, "Iraq War");
ResultSet rs = pstmt.executeQuery() ;


rs.next() ;
Clob clob = rs.getClob("content") ;


InputStreamReader in = new InputStreamReader(clob.getAsciiStream()) ;


JTextArea text = new JTextArea(readString(in)) ;


rs.close();
pstmt.close();



上一篇:漫谈Java数据库存取技术

下一篇:认识JDBC 2.0中的高级数据类型

  • 开发完整J2EE解决方案的八个步骤 3
  • 从TDD的观点来看IntelliJ IDEA
  • "Shale? JSF? Struts is dead?"
  • Weblogic server关闭脚本。。。
  • 使用org.apache.commons.beanutils个人感受
  • Java异常处理
  • SMTHJavaFAQ(4)2D作图以及文字处理
  • Nokia的J2ME新开发工具——Nokia Developer’s Suite 3.0 for J2ME功能介绍
  • Java语言入门--第九章Java的输入输出操作
  • Eclipse3.0.1+Myeclipse3.8.2+tomcat5开发第一个struts应用(实战篇)
  • web开发中对统一提交还是分步提交的对话记录
  • Java下的Framework编写(3)--cglib的应用
  • DODS学习日记(六)
  • j2me开发书本推荐。
  • Java中四种XML解析技术之不完全测试【来自JAVA家】
  • JAVA编程思想学习笔记(一)
  • IBM websphere workflow工作流脚本应用
  • Java入门笔记1_HelloWorld
  • 返回】 【顶部】 【关闭
    Copyright © 2005-2010 www.594k.com All Rights Reserved.
    版权所有:JAVA学习网 备案序号:皖ICP备06004238号