JDBC 2.0中的高级数据类型
例如,我们要向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中的高级数据类型相关推荐
- 标准化Keras:TensorFlow 2.0中的高级API指南
TensorFlow正准备发布2.0版本 . 在本文中,我们希望预览TensorFlow的高级API标题的方向,并回答一些常见问题. Keras是一个非常受欢迎的高级API,用于构建和培训深度学习模型 ...
- Java SE 6 新特性: Java DB 和 JDBC 4.0
http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...
- 【TensorFlow2.0】(1) tensor数据类型,类型转换
各位同学好,今天和大家分享一下TensorFlow2.0中的tensor数据类型,以及各种类型之间的相互转换方法. 1. tf.tensor 基础操作 scaler标量:1.2 vector向量:[1 ...
- JDBC 4.0鲜为人知的Clob.free()和Blob.free()方法
在会议上谈论jOOQ时,我总是展示此幻灯片,其中包含许多人们经常犯的非常常见的JDBC错误: 此图中的六个常见的JDBC错误 您可以找到错误吗? 其中一些是显而易见的,例如: 第4行:由于第3行的连接 ...
- 数据类型_分享redis中除5种基础数据类型以外的高级数据类型
众所周知,在redis中的数据类型有String(字符串).hash(哈希).list(列表).set(集合).zset(有序集合)五种.但在这5种之外还有高级数据类型. 今天和大家介绍下常用的高级数 ...
- 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 ...
- python中必须要会的四大高级数据类型(字符,元组,列表,字典)
高级数据类型(字符,元组,列表,字典) 一. 字符串 二. 列表 三. 元组 四. 字典 前言 作者:神的孩子都在跳舞 关注我的csdn博客,更多python知识还在更新 一. 字符串 生活中我们经常 ...
- cocos2d-x3.0中数据类型vector,map、value
在3.0中,已经不再使用以前的ccarray,ccdictionary,ccint等从以前的oc继承过来的数据类型,转而加入了自己的数据结构,更加符合c++的开发习惯和思考模式,其中就包括了vecto ...
- java jdbc.idbdriver_Servlet开发中JDBC的高级应用
连结数据库 JDBC使用数据库URL来说明数据库驱动程序.数据库URL类似于通用的URL,但SUN 在定义时作了一点简化,其语法如下: Jdbc::[node]/[database] 其中子协议(su ...
最新文章
- Android 监听多个Spinner 的点击事件
- Java Day02-1
- log4j的日志级别(ssm中log4j的配置)
- 【week3】psp (技术随笔)
- 想要设计自己的微服务?看这篇文章就对了
- OpenJudge计算概论-找出第k大的数
- MySQL中union和order by一起使用的方法
- 为什么旧硬件的驱动越来越难找了?
- SQL区分大小写——转载
- AngularJS Providers 详解
- android之StrictMode介绍
- P2922 [USACO08DEC]秘密消息Secret Message
- i8一点通无盘解决方案
- 软件工程期末复习汇总
- 网吧服务器是起什么作用的,网吧服务器的用途是什么?
- Java框架jboot_微服务框架 Jboot 2.0.5 发布,常规更新
- input不能输入的问题
- 介绍DOTA2 AI的开发基础——调试
- swift 判断是否设置了代理
- html根据地点名称查坐标,根据地址查询经纬度Js
热门文章
- 仿真环境跟车2分钟,就让自动驾驶系统撞上马路牙子,攻破率超90%,多传感器融合系统都失效...
- 训练、标注成本节省90%!华为云自动化AI开发平台ModelArts 3.0发布,从训练数据到模型落地一站式打通...
- 特斯拉撞了警车:辅助系统Autopilot全程开启,连撞两车还没自动停下
- 首个镜子分割网络问世,大连理工、鹏城实验室、香港城大出品 | ICCV 2019
- 中国军团称霸KDD:华人博士斩获最佳论文,清华北大中科大华为等榜上有名
- ubuntu16.04忘了root密码
- Hadoop科普文—常见的45个问题解答 #183; Hadoop
- CentOS 6.5 64位 安装Nginx, MySQL, PHP
- Android Touch事件原理加实例分析
- 一起谈.NET技术,ASP.NET MVC3 Service Location