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. Android 监听多个Spinner 的点击事件
  2. Java Day02-1
  3. log4j的日志级别(ssm中log4j的配置)
  4. 【week3】psp (技术随笔)
  5. 想要设计自己的微服务?看这篇文章就对了
  6. OpenJudge计算概论-找出第k大的数
  7. MySQL中union和order by一起使用的方法
  8. 为什么旧硬件的驱动越来越难找了?
  9. SQL区分大小写——转载
  10. AngularJS Providers 详解
  11. android之StrictMode介绍
  12. P2922 [USACO08DEC]秘密消息Secret Message
  13. i8一点通无盘解决方案
  14. 软件工程期末复习汇总
  15. 网吧服务器是起什么作用的,网吧服务器的用途是什么?
  16. Java框架jboot_微服务框架 Jboot 2.0.5 发布,常规更新
  17. input不能输入的问题
  18. 介绍DOTA2 AI的开发基础——调试
  19. swift 判断是否设置了代理
  20. html根据地点名称查坐标,根据地址查询经纬度Js

热门文章

  1. 仿真环境跟车2分钟,就让自动驾驶系统撞上马路牙子,攻破率超90%,多传感器融合系统都失效...
  2. 训练、标注成本节省90%!华为云自动化AI开发平台ModelArts 3.0发布,从训练数据到模型落地一站式打通...
  3. 特斯拉撞了警车:辅助系统Autopilot全程开启,连撞两车还没自动停下
  4. 首个镜子分割网络问世,大连理工、鹏城实验室、香港城大出品 | ICCV 2019
  5. 中国军团称霸KDD:华人博士斩获最佳论文,清华北大中科大华为等榜上有名
  6. ubuntu16.04忘了root密码
  7. Hadoop科普文—常见的45个问题解答 #183; Hadoop
  8. CentOS 6.5 64位 安装Nginx, MySQL, PHP
  9. Android Touch事件原理加实例分析
  10. 一起谈.NET技术,ASP.NET MVC3 Service Location