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()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)