快速业务通道

JDBC读写MySQL的大字段数据 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

JDBC读写MySQL的大字段数据

时间:2011-04-02 51cto博客 leizhimin

不管你是新手还是老手,大字段数据的操作常常令你感到很头痛。因为大字段有些特 殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式来处理的。而非一般 的字段,一次即可读出数据。本人以前用到Spring+iBatis架构来操作大字段,结果以惨 烈失败而告终,在网上寻求解决方案,也没找到答案。最终以JDBC来实现了大字段操作部 分。

本文以MySQL为例,通过最基本的JDBC技术来处理大字段的插入、读取操作。

环境:

MySQL5.1

JDK1.5

一、认识MySQL的大字段类型

BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、 BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型, 有相同的最大长度和存储需求。

BLOB 列被视为二进制字符串(字节字符串)。TEXT列被视为非二进制字符串(字符字符 串)。BLOB列没有字符集,并且排序和比较基于列值字节的数值值。TEXT列有一个字符集 ,并且根据字符集的 校对规则对值进行排序和比较。

在TEXT或BLOB列的存储或检索过程中,不存在大小写转换。

当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的 值值,值被截取以保证适合。

几种类型的大字段最大长度说明:

TINYBLOB最大长度为255(2^[8]–1)字节的BLOB列。

TINYTEXT最大长度为255(2^[8]–1)字符的TEXT列。

BLOB[(M)]最大长度为65,535(2^[16]–1)字节的BLOB列。可以给出该类型的可选长度M 。如果给出,则MySQL将列创建为最小的但足以容纳M字节长的值的BLOB类型。

TEXT[(M)]最大长度为65,535(2^[16]–1)字符的TEXT列。可以给出可选长度M。则 MySQL将列创建为最小的但足以容纳M字符长的值的TEXT类型。

MEDIUMBLOB最大长度为16,777,215(2^[24]–1)字节的BLOB列。

MEDIUMTEXT最大长度为16,777,215(2^[24]–1)字符的TEXT列。

LONGBLOB最大长度为4,294,967,295或4GB(2^[32]–1)字节的BLOB列。LONGBLOB列的最 大有效(允许的)长度取决于客户端/服务器协议中配置最大包大小和可用的内存。

LONGTEXT最大长度为4,294,967,295或4GB(2^[32]–1)字符的TEXT列。LONGTEXT列的最 大有效(允许的)长度取决于客户端/服务器协议中配置最大包大小和可用的内存。

二、创建测试环境

create table user (      id int(11) not null auto_increment,      name varchar(50) not null,      pswd varchar(50) default null,      pic longblob,      remark longtext,      primary key (id) );

JDBC響亟MySQL議寄忖粁方象(2)

扮寂:2011-04-02 51cto鴬人 leizhimin

眉、峨秘響函blob

import lavasoft.common.DBToolkit; import java.io.*; import java.sql.*; /** * 荷恬MySQL5議blob忖粁 * * @author leizhimin 2009-12-3 11:34:50  */ public class BlobTest {          public static void main(String[] args) {                  insertBlob();                  queryBlob();          }          public static void insertBlob() {                  Connection conn =  DBToolkit.getConnection();                  PreparedStatement ps = null;                  try {                          String sql = "insert  into testdb.user (name, ps

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号