clob类型的数据应该最大是2GB或者是4GB吧,你说的这个数量的数据应该不是最大可以存储的。你把你要存储的数据转换成字节数组存一下试试。还有就是看一下是不是因为限定了数据的大小或者数据是字符串。CLOB类型的数据应该最大可以是2GB或以上。
我以前写程序发现:
oracle的数据库BLOB不能用来存储字符,改用NCLOB就OK了。
BLOB:用来存储无结构的二进制数据
CLOB:存储单字节字符数据。(别用来存中文喔。。。)
NCLOB:用来存储定宽多字节字符数据。
BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的。其实两个是可以互换的的,或者可以直接用LOB字段代替这两个。但是为了更好的管理ORACLE数据库,通常像、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等 *** 作都提供很大的方便。
oracle如下
数据库中提供了两种字段类型 Blob 和 Clob 用于存储大型字符串或二进制数据(如)。
Blob 采用单字节存储,适合保存二进制数据,如文件。
Clob 采用多字节存储,适合保存大型文本数据。
首先创建一个空 Blob/Clob 字段,再从这个空 Blob/Clob字段获取游标,例如下面的代码:
PreparedStatement ps = connprepareStatement( " insert into PICTURE(image,resume) values(,) " );
// 通过oralcesqlBLOB/CLOBempty_lob()构造空Blob/Clob对象
pssetBlob( 1 ,oraclesqlBLOBempty_lob());
pssetClob( 2 ,oraclesqlCLOBempty_lob());
psexcuteUpdate();
psclose();
// 再次对读出Blob/Clob句柄
ps = connprepareStatement( " select image,resume from PICTURE where id= for update " );
pssetInt( 1 , 100 );
ResultSet rs = psexecuteQuery();
rsnext();
oraclesqlBLOB imgBlob = (oraclesqlBLOB)rsgetBlob( 1 );
oraclesqlCLOB resClob = (oraclesqlCLOB)rsgetClob( 2 );
// 将二进制数据写入Blob
FileInputStream inStream = new FileInputStream( " c://imagejpg " );
OutputStream outStream = imgBlobgetBinaryOutputStream();
byte [] buf = new byte [ 10240 ];
int len;
while (len = inStreamread(buf) > 0 ) {
outStreamwrite(buf, 0 ,len);
}
inStreamclose();
outStreamcloese();
// 将字符串写入Clob
resClobputString( 1 , " this is a clob " );
// 再将Blob/Clob字段更新到数据库
ps = connprepareStatement( " update PICTURE set image= and resume= where id= " );
pssetBlob( 1 ,imgBlob);
pssetClob( 2 ,resClob);
pssetInt( 3 , 100 );
psexecuteUpdate();
psclose();
以上就是关于oracle 中clob的长度是多少/ 怎么会报这种错误:数据大小超出此类型的最大值: 4729全部的内容,包括:oracle 中clob的长度是多少/ 怎么会报这种错误:数据大小超出此类型的最大值: 4729、java 大字符串转为二进制流存入CLOB字段 JDBC方法、oracle中Blob和Clob类型的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)