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 ...
最新文章
- MVC使用Flash来显示图片
- mvc中的ViewData用到webfrom中去
- 内置的数据无法实现高性能
- 浅谈街霸的帧数据 (一):frame data
- HTML5-A*寻路算法2
- 怎样安装android系统版本,Android 12公测版Beta 1现已推出,教你如何安装
- PHP数据layui表格,基于layui和thinkphp数据表格的数据接口,layui表格局部刷新
- SpannableString与SpannableStringBuilder
- 基于Qt的NAT检测和NAT穿透
- java 在某个时间段定时_Java 在某一个时间点定时执行任务(转载)
- excel的if函数嵌套使用
- python往npy写入数据_操作python实现npy格式文件转换为txt文件
- 中考计算机试题ppt判断,2015中考信息技术试题PPT操作题2-26(终)
- auto.js实现淘宝快速提交订单
- Win32设置静态文本和按钮颜色、字体
- (二-1)多码之间的进制转换【计算机组成原理】
- linux无人值守批量安装系统
- sqlalchemy.exc.ArgumentError: relationship 'tags' expects a class or a mapper argument (received:
- Learning to Denoise Astronomical Images with U-nets笔记(天文图像噪声、损失函数)
- python:自定义函数,通过姓名及电话查询人员信息及添加新人员信息表(列表+字典)
热门文章
- 原来,王兴是理想汽车的「二当家」!股份只比李想少1.6%丨理想汽车招股书
- 祝「杭州程序媛」母亲节快乐!
- Debian 10发布:基于Linux 4.19内核,包含5.9万软件包
- Hadoop HBase概念学习系列之HRegion服务器(三)
- JUnit 3.8 通过反射测试私有方法
- PostgreSQL 8.2.5 安装为 Windows 服务 (Service)
- Linux视频教程系列汇总
- 我下载的mysql解压后没有安装_mysql 解压版安装配置方法教程
- Apache ServiceComb — Overview
- 互联网协议 — OAuth2 第三方授权协议