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();

(T111)

本文选自飞思图书《精通Java核心技术》

JDBC 2.0中的高级数据类型相关推荐

  1. 标准化Keras:TensorFlow 2.0中的高级API指南

    TensorFlow正准备发布2.0版本 . 在本文中,我们希望预览TensorFlow的高级API标题的方向,并回答一些常见问题. Keras是一个非常受欢迎的高级API,用于构建和培训深度学习模型 ...

  2. Java SE 6 新特性: Java DB 和 JDBC 4.0

    http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...

  3. 【TensorFlow2.0】(1) tensor数据类型,类型转换

    各位同学好,今天和大家分享一下TensorFlow2.0中的tensor数据类型,以及各种类型之间的相互转换方法. 1. tf.tensor 基础操作 scaler标量:1.2 vector向量:[1 ...

  4. JDBC 4.0鲜为人知的Clob.free()和Blob.free()方法

    在会议上谈论jOOQ时,我总是展示此幻灯片,其中包含许多人们经常犯的非常常见的JDBC错误: 此图中的六个常见的JDBC错误 您可以找到错误吗? 其中一些是显而易见的,例如: 第4行:由于第3行的连接 ...

  5. 数据类型_分享redis中除5种基础数据类型以外的高级数据类型

    众所周知,在redis中的数据类型有String(字符串).hash(哈希).list(列表).set(集合).zset(有序集合)五种.但在这5种之外还有高级数据类型. 今天和大家介绍下常用的高级数 ...

  6. Java连接SQL2005及SQL Server JDBC Driver 2.0中sqljdbc.jar和sqljdbc4.jar的区别

    第一.Java连接SQL2005 一.JAVA连接SQL的语句 JAVA连接SQL2000语句为: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver&q ...

  7. python中必须要会的四大高级数据类型(字符,元组,列表,字典)

    高级数据类型(字符,元组,列表,字典) 一. 字符串 二. 列表 三. 元组 四. 字典 前言 作者:神的孩子都在跳舞 关注我的csdn博客,更多python知识还在更新 一. 字符串 生活中我们经常 ...

  8. cocos2d-x3.0中数据类型vector,map、value

    在3.0中,已经不再使用以前的ccarray,ccdictionary,ccint等从以前的oc继承过来的数据类型,转而加入了自己的数据结构,更加符合c++的开发习惯和思考模式,其中就包括了vecto ...

  9. java jdbc.idbdriver_Servlet开发中JDBC的高级应用

    连结数据库 JDBC使用数据库URL来说明数据库驱动程序.数据库URL类似于通用的URL,但SUN 在定义时作了一点简化,其语法如下: Jdbc::[node]/[database] 其中子协议(su ...

最新文章

  1. MVC使用Flash来显示图片
  2. mvc中的ViewData用到webfrom中去
  3. 内置的数据无法实现高性能
  4. 浅谈街霸的帧数据 (一):frame data
  5. HTML5-A*寻路算法2
  6. 怎样安装android系统版本,Android 12公测版Beta 1现已推出,教你如何安装
  7. PHP数据layui表格,基于layui和thinkphp数据表格的数据接口,layui表格局部刷新
  8. SpannableString与SpannableStringBuilder
  9. 基于Qt的NAT检测和NAT穿透
  10. java 在某个时间段定时_Java 在某一个时间点定时执行任务(转载)
  11. excel的if函数嵌套使用
  12. python往npy写入数据_操作python实现npy格式文件转换为txt文件
  13. 中考计算机试题ppt判断,2015中考信息技术试题PPT操作题2-26(终)
  14. auto.js实现淘宝快速提交订单
  15. Win32设置静态文本和按钮颜色、字体
  16. (二-1)多码之间的进制转换【计算机组成原理】
  17. linux无人值守批量安装系统
  18. sqlalchemy.exc.ArgumentError: relationship 'tags' expects a class or a mapper argument (received:
  19. Learning to Denoise Astronomical Images with U-nets笔记(天文图像噪声、损失函数)
  20. python:自定义函数,通过姓名及电话查询人员信息及添加新人员信息表(列表+字典)

热门文章

  1. 原来,王兴是理想汽车的「二当家」!股份只比李想少1.6%丨理想汽车招股书
  2. 祝「杭州程序媛」母亲节快乐!
  3. Debian 10发布:基于Linux 4.19内核,包含5.9万软件包
  4. Hadoop HBase概念学习系列之HRegion服务器(三)
  5. JUnit 3.8 通过反射测试私有方法
  6. PostgreSQL 8.2.5 安装为 Windows 服务 (Service)
  7. Linux视频教程系列汇总
  8. 我下载的mysql解压后没有安装_mysql 解压版安装配置方法教程
  9. Apache ServiceComb — Overview
  10. 互联网协议 — OAuth2 第三方授权协议