oracle 数据库中定义了clob类型字段。。。

忧郁的苦笑 2013-02-28 11:00:29
oracle中的clob类型字段,用的是jdbc 。 我在实体类中可以定义为String类型吗?

我的方法都是封装好的,我作为string类型,插入没问题,但是查询就有问题,可能是我插入的字符少吧。
以前没用过这类型,请高手指教。我该怎么定义,和操作。
网上的东西有点乱,看的有点懵
...全文
1234 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿诺 2013-02-28
  • 打赏
  • 举报
回复
clob是大字段吧?貌似在java中有相应的字段类型的忘记了....
忧郁的苦笑 2013-02-28
  • 打赏
  • 举报
回复
我的是jdbc 你看看这个封装的,红色框是我加的,但是加的不对
lvzg_005 2013-02-28
  • 打赏
  • 举报
回复
可以定义成string类型,但是在查询结果的时候,需要特殊处理这个字段,以mybatis为例,此字段需要使用ClobTypeHandler处理才能正确显示。 你使用了什么持久化方案
luojitao1020 2013-02-28
  • 打赏
  • 举报
回复
引用 8 楼 wnwyxx 的回复:
我在java中对应的字段直接定义为String类型, 然后直接保存和执行String类型的一样,可以吗
那倒是不大清楚 我以前弄的时候是以流的形式写入/输出 在写入之前将String类型字符串转为Blob流写入 输出的时候以流的形式读取 然后转换为String字符串输出
  • 打赏
  • 举报
回复
将clob, blob理解为byte[] 循环取的时候:
byte[] temp_bytes= rs.getBytes("字段名");
----------------转换
String contentString="";
		try {
			if(bytes!=null && !bytes.equals("")){
				contentString = new String(bytes, "gb2312");
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return contentString;
忧郁的苦笑 2013-02-28
  • 打赏
  • 举报
回复
我在java中对应的字段直接定义为String类型, 然后直接保存和执行String类型的一样,可以吗
luojitao1020 2013-02-28
  • 打赏
  • 举报
回复
我记得JAVA中对应的字段类型好像是BLob来着? 在存取的时候转换一下类型
忧郁的苦笑 2013-02-28
  • 打赏
  • 举报
回复
public static String ClobToString(CLOB clob) throws SQLException, IOException { String reString = ""; Reader is = clob.getCharacterStream();// 得到流 BufferedReader br = new BufferedReader(is); String s = br.readLine(); StringBuffer sb = new StringBuffer(); while (s != null) {// 执行循环将字符串全部取出付值给 StringBuffer由StringBuffer转成STRING sb.append(s); s = br.readLine(); } reString = sb.toString(); return reString; } 这个是我看的
李志遠 2013-02-28
  • 打赏
  • 举报
回复
试试
public String ClobToString(Clob clob) {
        String reString = "";
        Reader is = null;
        try {
            is = clob.getCharacterStream();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // 得到流
        BufferedReader br = new BufferedReader(is);
        String s = null;
        try {
            s = br.readLine();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        StringBuffer sb = new StringBuffer();
        while (s != null) {
            //执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
            sb.append(s);
            try {
                s = br.readLine();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        reString = sb.toString();
        return reString;
    }
忧郁的苦笑 2013-02-28
  • 打赏
  • 举报
回复
实体类定义为String 类型。 然后怎么在获取数据时,怎么把这个clob字段的值通过转换赋值给string类型?
主要功能点: 不需要运行Oracle数据库软件,ODU直接读取数据库文件解析数据。 支持ASM,能够直接从ASM磁盘导出数据,即使相关的磁盘组不能成功mount 支持从ASM直接抽取出数据文件和其他任意存储在ASM的文件(包括控制文件、日志文件和归档日志等),即使相关的磁盘组不能成功mount 支持的Oracle数据库版本包括7,8i,9i,10g,11g 支持多种平台的数据库,包括AIX、LINUX、HPUX、SOLARIS、WINDOWS等。能够在一个平台上导出其他平台的数据,比如在Windows 32位系统上,使用AIX系统上的数据文件导出数据。 支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DOUBLE (10g+) 全面支持LOB字段: 支持CLOB、NCLOB和BLOB CLOB支持Big Endian和Little Endian字节序 支持LOB分区,子分区 支持同一个表,不同LOB列使用不同CHUNK SIZE的情况 CLOB数据可以导出到与其他列相同的文件,或存储到单独的文件 LOB列在没有SYSTEM表空间的情况下仍然能够导出 LOB列在相关的lob index损坏的情况下依然能够导出 支持各种表,包括普通的HEAP表,IOT表和聚簇(CLUSTER)表 支持IOT表: 支持普通IOT表的导出 支持压缩IOT表的导出 支持IOT表溢出段 支持IOT表分区(包括子分区) 只能在有SYSTEM表空间时才能导出IOT表 支持压缩表 支持表被truncate后的数据恢复 支持表被drop后的数据恢复 在有SYSTEM表空间的情况下,自动获取数据字典信息 支持在没有SYSTEM表空间和数据字典损坏的情况下恢复数据,在没有数据字典可用时,ODU能够自动判断数据的类型 支持10g及以上的大文件(BigFile)表空间 全面支持64位系统,支持超过4G大小的数据文件。 支持复制操作系统命令不能复制的坏文件 支持同一个库不同块大小的数据文件。 支持多种字符集之间的转换,能够正确的转换CLOB、NCLOB、NVARCHAR2列类型的数据到指定的字符集。 自动检测数据文件的表空间号和文件号 导出的数据格式包括纯文本和DMP文件两种。以纯文本导出时,能够自动生成建表的SQL语句和SQL*Loader导入所需的control文件 模拟Oracle的dump块功能,能够dump数据文件的数据块 支持DESC表,以显示表的列定义 支持列出表的分区和子分区
ODU全称为Oracle Database Unloader,是类似于Oracle的DUL的软件,用于直接从Oracle数据库的数据文件获取表数据。在各种原因造成的数据库不能打开时,用于抢救数据,最大限度地减少数据丢失。 ODU有什么功能特点? 支持的Oracle数据库版本包括8i,9i,10g,11g 自动检测数据文件的表空间号和文件号 在有SYSTEM表空间的情况下,自动获取数据字典信息。 支持各种表,普通的HEAP表,IOT表,聚簇(CLUSTER)表。 DESC表,以显示表的列定义 支持10g及以上的大文件(BigFile)表空间 列出表的分区和子分区 支持表被truncate后的数据恢复 支持表被drop后的数据恢复 支持压缩表 支持在没有SYSTEM表空间和数据字典损坏的情况下恢复数据,在没有数据字典可用时,ODU能够自动判断数据的类型 支持IOT表导出: 普通IOT表的导出 压缩IOT表的导出 支持IOT表溢出段 支持IOT表分区(包括子分区) 只能在有SYSTEM表空间时才能导出IOT表 支持多种平台的数据库,包括AIX、LINUX、HPUX、SOLARIS、WINDOWS等。能够在一个平台上导出其他平台的数据,比如在Windows 32位系统上,使用AIX系统上的数据文件导出数据。 支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DOUBLE (10g+) 导出的数据格式包括纯文本和DMP文件两种。以纯文本导出时,能够自动生成建表的SQL和SQLLDR导入所需的CONTROL文件(.CTL) 支持同一个库不同的块大小的数据文件。 全面支持LOB字段: 支持CLOB、NCLOB和BLOB CLOB支持Big Endian和Little Endian字节序 支持LOB分区,子分区 支持同一个表,不同LOB列使用不同CHUNCK SIZE的情况 CLOB数据可以导出到与其他列相同的文件,或存储到单独的文件 LOB列只有在SYSTEM表空间存在的情况下才能导出 支持多种字符集之间的转换,能够正确的转换CLOB、NCLOB、NVARCHAR2列类型的数据到指定的字符集。 ODU全面支持64位系统,支持超过4G大小的数据文件。 支持复制操作系统命令不能复制的坏文件 模拟oracle的dump块功能,能够dump数据文件块的数据 目前不支持的功能: 11g的SecureFiles ------------------------ 详细使用说明见 http://www.laoxiong.net/odu

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧