经常有人谈到Blob类型字段的读写问题,我也来说两句。

最近在写一些东西,对常用数据库的数据类型、函数等作了一些比较,也写了许多了的测试代码,以下是我测试的结果:

测试数据库: MS Sql Server2000,

DB2v8.1,

Oracle9i,

Postgre7.4,

MySQL v4.1,

InterBase v6.5。

1、驱动程序

a、微软的JDBC驱动不支持锁定更新,驱动程序声明不支持批量更新,但可  以工作,速度也还可以,不过使用JTDS的SQL Server JDBC驱动可以实现锁定更新。

b、MySQL将字符集设为GBK时,使用参数更或插入中的字符串字段参数会引

起异常,将字符集改为GB2312就可以了。手册声明subString、len等函数是多字节安全的,实际上与长度有关的函数都是按照字节操作的,与其 他的数据库(DB2除外,他的现象基本与mySQL相同)的相应函数有区别(其它数据库相应函数按字符操作)。

c、InterBase 的驱动程序实现的最不好,常用的几个JDBC函数都没有实

现,而且不支持批量更新。使用批量操作(addBatch())回引起异常。无法象其他数据库一样在URL中指定编码,必须在 getConnection()函数中带入参数,虽然在7.1版本中做了改进(可将编码事先保存在System对象中),不用再在 getConnection()带入参数,但是好像还是不能在URL中指定编码。

2、数据类型

a、只有SQL Server2000没有提供Blob和Clob,但是提供了Image类型和Text类型,对应blob和clob。使用起来一样。

b、DB2的Blob和CloB类型必须指定大小。

b、对于blob这几种数据库都可以使用PreparedStatement对象的setBytes()进行设置。

c、Clob类型都可使用PreparedStatement对象的setString()进行设置。

注:对于插入和更新应使用代参数的PreparedStatement对象。

下面是读取和更新Oracle数据库Blob和Clob数据类型的代码:

Java代码

[b]  Blob类型读取:[/b]

Blob blob = rs.getBlob(index);;

if (blob!= null );{

byte buf[] = new byte [( int );blob.length();];;

InputStream in = blob.getBinaryStream();;

try {

in.read(buf);;

ur code

} catch (IOException e); {

throw new SQLException();;

}

}

[b]Clob数据类型读取:[/b]

Clob clob = rs.getClob(index);;

if (clob!= null );{

char buf[] = new char [( int );clob.length();];

Reader reader = rs.getClob(index);.getCharacterStream();;

try {

reader.read(buf);;

//your code

} catch (IOException e); {

throw new SQLException();;

}

}

[b] Blob类型读取:[/b]

Blob blob = rs.getBlob(index);;

if (blob!=null);{

byte buf[] = new byte[(int);blob.length();];;

InputStream in = blob.getBinaryStream();;

try {

in.read(buf);;

//your code

} catch (IOException e); {

throw new SQLException();;

}

}

[b]Clob数据类型读取:[/b]

Clob clob = rs.getClob(index);;

if (clob!=null);{

char buf[] = new char[(int);clob.length();];

Reader reader = rs.getClob(index);.getCharacterStream();;

try {

reader.read(buf);;

//your code

} catch (IOException e); {

throw new SQLException();;

}

}

以上的论点与原作者的经验有关,可能存在错误或片面之处,有知道者请向原作者指出,以免误导他人,也可让原作者自己纠正错误。

原文引用地址:http://www.javaeye.com/topic/5378

mysql 读取clob数据类型_谈谈有关各数据库Blob、Clob类型字段的读取、保存更新相关推荐

  1. oracle怎么截取long类型,Oracle 数据库中 Long 类型字段的读取

    最近在一个项目中遇到了需要读取 Oracle 数据库中的 Long 类型的字段的问题,折腾了好久,最后找到了其中的一个解决办法,决定记下了做个明灯吧! 在用 Mybatis 将该字段的数据映射到 St ...

  2. mysql课程id数据类型_数据库学习之六:mysql数据类型

    六.mysql数据类型 1.课程大纲 • 数据类型介绍 • 数据类型设置 • 列属性 • 数据类型的字符集用法 • 选择适当的数据类型 2.数据类型介绍 • 四种主要类别: 数值类型 字符类型 时间类 ...

  3. mysql实现位图索引_位图索引,数据库索引浅浅的学习

    位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣.说来惭愧,在这之前对位图索引一无所知,因此趁此机会写篇博文介绍下位图索引. 1. 案例 有张表名为ta ...

  4. oracle clob 写入mongo,【Oracle】Varchar2/Blob/Clob用法详解

    数据库中提供了三种字段类型Varchar2.Blob和Clob用于存储字符串或二进制数据,其中Varchar2.Clob用于存储字符串数据,而Blob用于存储二进制数据. Varchar2采用单字节存 ...

  5. 易语言mysql 读取数据类型_易语言教程-数据库-读取相关数据

    本课用的命令 读() 取记录号 () 取记录数() 到首记录 () 到尾记录 () 打开() 关闭() 跳过() 跳到() 本课实现功能 读,上一条,下一条,读首记录,读尾记录,读所有记录 教程源码: ...

  6. 下列( )类型不是mysql中的数据类型_下列( )类型不是MySQL中常用的的数据类型。_学小易找答案...

    [单选题]下面哪个坐标系不属于在椭球面上表示点位置的坐标系统. [简答题]2.根据形体的两面投影,补绘其第三面投影(尺寸可由图上直接量取). (1) (2) (3) (4) (5) (6) (7) ( ...

  7. mysql读取工具下载_百度云文件数据库读取工具

    百度云文件数据库读取工具是网络共享频道下深受用户喜爱的软件,太平洋下载中心提供百度云文件数据库读取工具官方下载. 百度云文件数据库读取工具免费版是一款相当实用的百度云文件数据库管理工具,百度云文件数据 ...

  8. 在mysql中更改数据类型_如何在MySQL中更改列的数据类型?

    如果要将某个类型的所有列更改为其他类型,可以使用如下查询生成查询: select distinct concat('alter table ', table_name, ' modify ', col ...

  9. mysql记录虚拟货币数据类型_近几年虚拟货币应用情况的相关数据

    ...时间也是会远远超过800天的.虽然从2017年年底开始比特币单价达到了巅峰,近几年也是呈现一个下降的趋势,数字货币流行的当下,只要数字货币还能存活,比特币的单价就绝对还会攀升.早期靠投资比特币而 ...

最新文章

  1. Spring MVC快速教程:依赖注入 Spring MVC Fast Tutorial: Dependency Injection
  2. 趣图:如何假装自己是一个IT人?
  3. 可能是最好理解的二叉树的层序遍历
  4. 200个模块,怎么用有线的方式进行组网通信
  5. Linux操纵零碎下设置JSP开发环境的方式
  6. 第七届 蓝桥杯 省赛 第六题 方格填数(next_permutation)
  7. 压力测试实践一:JMeter + JProfiler 入门
  8. 列名 userid 不明确。 表结构_SQL-Server(三)表的创建和操作
  9. Objective-C 2.0的运行时编程-消息转发
  10. Linux中缺32位运行库steam,Steam运行库修复工具 32位/64位 最新免费版
  11. git 解决push报错:[rejected] master -> master (fetch first) error: failed to push some refs to ‘ ‘
  12. Python基于HRHet的跌倒检测系统(源码&教程)
  13. 虚拟机xftp工具连接服务器,xftp5(ftp上传工具)如何连接虚拟机?
  14. 智慧城市(大数据,物联网,云计算之应用)
  15. python人脸识别解锁电脑_python人脸识别
  16. 卧槽!百度网盘宣布 VIP 开放免费领取!亲测有效!!
  17. 【业务架构】获得正确业务能力的 12 项必备措施
  18. 中拓互联域名小课堂:.购物域名,自建商城的标配
  19. django-CBVS (转载知乎彧神)
  20. 海航陈峰回忆创业史:那是一个非常有趣的时代!

热门文章

  1. 大疆软件经纬度偏差消除
  2. JAVA诊所信息管理系统计算机毕业设计Mybatis+系统+数据库+调试部署
  3. 10个python接私活的平台,整整10个!总有适合你的,你有技术就有钱
  4. ios11.2计算机更新,iOS11.2.2正式版怎么样、更新了什么?iOS11.2.2降频吗?
  5. adams样条驱动_adams驱动中如何施加 正弦函数
  6. Qt之塔防游戏 c++(一)
  7. 五脏排毒最简单有效的方法
  8. Kettle Job机制
  9. 时间控件-时分秒/分秒/年月日
  10. java时间格式大全