blob数据类型有哪些?

blob数据类型有哪些?,第1张

blob数据类型以随机存取块的形式存储任何种类的二进制数据;二进制数据通常由已保存的电子表格、程序装入模块和数字化声音模式等等组成。

BLOB数据类型以随机存取块(称为智能大对象空间)的形式存储任何种类的二进制数据。二进制数据通常由已保存的电子表格、程序装入模块和数字化声音模式等等组成。数据库服务器不会对BLOB列的内容进行解释。

BLOB列最长可为4太字节(4240个字节),不过系统资源可能会强加较低的实际限值。分配给智能大对象数据类型的最小磁盘空间量为512字节。

术语智能大对象指的是BLOB和CLOB数据类型。将CLOB数据类型,用于随机访问文本数据。有关BLOB和CLOB数据类型的一般信息。

字符串以blob以byte[] 二进制的形式存成blob字段
案例一:

oracle数据库服务器系统使用的是UTF-8编码或者是AL32UTF8编码
2在Web应用中已经将请求编码设置为UTF-8编码
3二进制数据的取得
1
2
3
4
5
6
7
8
9
10
11

Blob blogObj = rstgetBlob("CONTENT");
if(blogObj!=null){
byte[] content = blogObjgetBytes(1, (int) blogObjlength());
try {
newssetContent(new String(content));
} catch (UnsupportedEncodingException e) {

eprintStackTrace();
}

}
乱码问题的解决方法:
newssetContent(new String(content,“UTF-8”));
案例二:读取blob,解决oracle中blob字段下载后的乱码问题
解决方法:注意不能按照像其他数据库那样的取法,而注意使用getBlob()这个oracle特有的方法。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (queryResultnext()) {
tfzn018KtfjxxPOsetTec_attachid(queryResultgetLong("TEC_ATTACHID"));
tfzn018KtfjxxPOsetTec_attachpostfix(queryResultgetString("TEC_ATTACHPOSTFIX"));
javasqlBlob blob = queryResultgetBlob("TEC_ATTACHCONTENT");
InputStream is = blobgetBinaryStream();
int bytesRead = 0;
byte[] buffer = new byte[8192];
// 从输入流读到字节数组
while ((bytesRead = isread(buffer, 0, 8192)) != -1) {
// 从字节数组到输出流
baoswrite(buffer, 0, bytesRead);
}
byte[] bufferFile = baostoByteArray();
tfzn018KtfjxxPOsetTec_attachcontent(bufferFile);
connectioncommit();
}
总结如下:
1,导入导出的方法有问题,可能需要指定什么参数。
2,数据库版本不同,对blob的处理方法不一致所致。
3,jdbc连接问题。
通过注册表修改
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0
NLS_LANG 改为你需要的字符集
常用字符集(暂时只收集到两个)
AMERICAN_AMERICAWE8ISO8859P1
SIMPLIFIED CHINESE_CHINAZHS16GBK
american_americaAL32UTF8
1--------- AMERICAN_AMERICAzhs16gbk
2--------- AMERICAN_AMERICAutf8
修改下注册表即可。


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

原文地址: https://outofmemory.cn/zz/13453499.html

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

发表评论

登录后才能评论

评论列表(0条)

保存