处理大数据对象1 clobjava应用开发详解_第1页
处理大数据对象1 clobjava应用开发详解_第2页
处理大数据对象1 clobjava应用开发详解_第3页
处理大数据对象1 clobjava应用开发详解_第4页
处理大数据对象1 clobjava应用开发详解_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA

应用开发详解第17章:Java数据库编程——处理大对象数据(1)——处理CLOB数据MLDN

软件教学研发部本章目标

了解大对象处理的基本原理

掌握CLOB数据的读、写操作

可以使用Clob类方便的处理大文本数据大对象

大对象处理主要指的是CLOB和BLOB两种类型的字段,在CLOB中可以存储海量文字,例如,存储一部《三国演义》或《红楼梦》等。在BLOB中可以存储二进制数据,如图片、电影等等,如果在程序中要想处理这样的大对象操作,则必须使用PreparedStatement完成,所有的内容要通过IO流的方式从大文本字段中保存和读取。写入大对象数据No.方法类型描述1void

setAsciiStream(intparameterIndex,InputStream

x,int

length)throws

SQLException普通将指定的输入流写入数据库的文本字段2void

setBinaryStream(intparameterIndex,InputStream

x,int

length)throws

SQLException普通将二进制的输入流数据写入到二进制字段之中读取大对象数据No.方法类型描述1InputStream

getAsciiStream(int

columnIndex)throws

SQLException普通根据列的编号返回大对象的文本输入流2InputStream

getAsciiStream(String

columnName)throws

SQLException普通根据列的名称返回大对象的文本输入流3Clob

getClob(int

i)

throws

SQLException普通根据列的编号返回Clob数据4Clob

getClob(String

colName)

throwsSQLException普通根据列名称返回Clob数据5InputStream

getBinaryStream(int

columnIndex)throws

SQLException普通根据列的编号,返回二进制数据6InputStream

getBinaryStream(String

columnName)throws

SQLException普通根据列的名称,返回而进制数据7Blob

getBlob(int

i)

throws

SQLException普通根据列的编号,返回Blob数据8Blob

getBlob(String

colName)

throwsSQLException普通根据列名称,返回Blob数据处理CLOB数据

CLOB表示大文本数据,在MySQL中提供了LONGTEXT表示大文本数据,此字段的最大保存数据量为4G。例如,下面有如下的数据库创建脚本:DROP

TABLE

userclob

;CREATE

TABLE

userclob(INTAUTO_INCREMENTNOT

NULL

,VARCHAR(30)LONGTEXTidPRIMARY

KEY

,namenote)

;写入大文本数据public

static

void

main(String[]

args)

throws

Exception

{Connection

conn=null

;PreparedStatement

pstmt=null

;String

name="李兴华";//数据库连接//数据库操作//姓名String

sql

=

"INSERT

INTO

userclob(name,note)

VALUES

(?,?)

"

;...//声明一个File对象,用于找到要操作的大文本文件File

f

=

new

File("d:"

+

File.separator

+

"mldn.txt");InputStream

input

=

null

;input

=

new

FileInputStream(f)

;pstmt.setString(1,

name)

;//通过输入流读取内容//通过输入流读取文件//设置第一个“?”的内容pstmt.setAsciiStream(2,

input,

(int)f.length())

;

//pstmt.executeUpdate()

;pstmt.close()

;conn.close()

;设置输入流//执行数据库更新操作//操作关闭//数据库关闭}}读取大文本字段public

static

void

main(String[]

args)

throws

Exception

{...int

id

=

1

;

//

idString

sql

=

"SELECT

name,note

FROM

userclob

WHERE

id=?"

;...pstmt

=

conn.prepareStatement(sql)

;pstmt.setInt(1,

id)

;rs

=

pstmt.executeQuery()

;if(rs.next()){String

name

=

rs.getString(1)

;//实例化PreparedStatement//设置查询的id//查询//判断是否有内容//取出name列的内容StringBuffer

note=new

StringBuffer();

System.out.println("姓名:"+name);InputStream

input=rs.getAsciiStream(2);//接收全部的大文本数据//接收数据//将文件换行作为分割符Scanner

scan

=

new

Scanner(input)

;scan.useDelimiter("\r\n")

;while(scan.hasNext()){note.append(scan.next()).append("\n");//不断读取内容}System.out.println("内容:"

+

note)

;

//

输出内容input.close()

;}...}}Clob类

以上的做法是将大文本数据内容直接通过ResultSet读取进来的,当然也可以使用ResultSet中提供的getClob()方法,将全部的内容变为Clob对象的内容,直接使用Clob可以方便的取得大文本的数据,也可以对这些文本数据进行一些简单的操作,如截取指定长度的文本等。Clob类的常用方法No.方法类型描述1InputStream

getAsciiStream()throwsSQLException普通返回输入流对象2String

getSubString(long

pos,int

length)

throwsSQLException普通从Clob中得到指定范围的字符串3long

length()

throws

SQLException普通返回Clob中的字符数量4void

truncate(long

len)

throws

SQLException普通截取指定长度的大文本使用Clob读取内容public

static

void

main(String[]

args)

throwsException{...//查询if(rs.next()){//判断是否有内容String

name

=

rs.getString(1)

;//取出name列的内容Clob

c

=

rs.getClob(2)

;//取出大文本数据String

note

=

c.getSubString(1,

(int)c.length())

;System.out.println("姓名:"+name);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论