数据库CLOB型字段是什么数据类型?

数据库CLOB型字段是什么数据类型?,第1张

SQL CLOB为内置类型,它将字符大对象(Character Large Object)存储为数据库表某一行中的一个列值。

默认情况下,驱动程序使用SQL locator(CLOB)实现Clob对象,这意味着CLOB对象包含一个指向SQL CLOB数据的逻辑指针而不是数据本身。Clob对象在它被创建的事务处理期间有效。

内置类型指任何语言在设计初期定义的类型,如c语言中的int,double, char,它也是在一种语言中最基本的类型,与编译器编译出的代码具有重大关系。

扩展资料

JAVA里面对CLOB的 *** 作

在绝大多数情况下,使用2种方法使用CLOB

1、相对比较小的,可以用String进行直接 *** 作,把CLOB看成字符串类型即可。

2、如果比较大,可以用getAsciiStream或者getUnicodeStream以及对应的setAsciiStream和 setUnicodeStream即可。

在一些数据库系统里,也使用Text作为CLOB的别名,比如SQL Server。

参考资料来源:百度百科-CLOB

参考资料来源:百度百科-内置类型

一、指代不同

1、blob:是指图像中的一块连通区域,Blob分析就是对前景/背景分离后的二值图像。

2、clob:是内置类型,将字符大对象 (Character Large Object) 存储为数据库表某一行中的一个列值。

3、nclob:长度可变的字符大对象。

二、特点不同

1、blob:对运动目标在图像平面上的轨迹进行估计的问题。

2、clob:CLOB 对象包含一个指向 SQL CLOB 数据的逻辑指针而不是数据本身。Clob 对象在被创建的事务处理期间有效。

3、nclob:大小可变的CLOB 对象,指向 SQL CLOB 数据的逻辑指针。

三、数据保存方式不同

1、blob:就是使用二进制保存数据。

2、clob:CLOB使用CHAR来保存数据。

3、nclob:使用NCHAR来保存数据。

参考资料来源:百度百科-CLOB

参考资料来源:百度百科-blo

BLOB是用来存储大量二进制数据的;CLOB用来存储大量文本数据。

1、用Blob和Clob建立对象:

(1)在存储的时候也同样的在PreparedStatement和CallableStatememt中,以参数的形式使用setBlob()和 setClob方法把Blob和Clob对象作为参数传递给SQL。这听起来似乎很简单对吧,但是并非我们想象的这样,很不幸由于这两个类型的特殊,JDBC并没有提供独立于数据库驱动的Blob和Clob建立对象。因此需要自己编写与驱动有关的代码,但这样又牵掣到移植性。这就要用到前面说过的思想了使用数据块进行写 *** 作。

(2)同样用PreparedStatement和CallableStatememt类,但参数的设置可以换为setAsciiStream、setBinaryStream、setCharacterStream、setObject(当然前3个同样存在长度的问题)

(3)下面给大家个例子以方便大家理解:

public void insertFile(File f)  throws Exception{

FileInputStream fis=new FileInputStream(f,Connection conn)

byte[] buffer=new byte[1024]

data=null

int sept=0int len=0

while((sept=fis.read(buffer))!=-1){

if(data==null){

len=sept

data=buffer

}else{

byte[] temp

int tempLength

tempLength=len+sept

temp=new byte[tempLength]

System.arraycopy(data,0,temp,0,len)

System.arraycopy(buffer,0,temp,len,sept)

data=temp

len=tempLength

}

if(len!=data.length()){

byte temp=new byte[len]

System.arraycopy(data,0,temp,0,len)

data=temp

}

}

String sql="insert into fileData (filename,blobData) value(?,?)"

PreparedStatement ps=conn.prepareStatement(sql)

ps.setString(1,f.getName())

ps.setObject(2,data)

ps.executeUpdate()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9604158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存