【Java/Oracle】怎样从Clob字段读取内容
有个表是这样的:
create table emp430_1( id number(12), name nvarchar2(20), profile clob, primary key(id) );
其中profile为clob类型,这种类型可以容纳超大文本。
以下是从中连续读取数据的程序:
package com.hy.lab.clob; import java.io.Reader; import java.sql.*; import java.util.ArrayList; import java.util.List; public class ClobReader { //-- 以下为连接Oracle数据库的四大参数 private static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; private static final String USER = "luna"; private static final String PSWD = "1234"; public static void main(String[] args){ List<Emp> ls=new ArrayList<>(); ls.add(new Emp(1,"武松","双刀客")); ls.add(new Emp(2,"李逵","双斧头客")); ls.add(new Emp(3,"董平","双枪将")); ls.add(new Emp(4,"鲁达","扁铲发明者")); Connection conn = null; PreparedStatement pstmt = null; try { Class.forName(DRIVER); conn = DriverManager.getConnection(URL, USER, PSWD); conn.setAutoCommit(false); String sql="select * from emp430_1"; pstmt = conn.prepareStatement(sql); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ long id=rs.getLong("id"); String name=rs.getString("name"); Clob clob=rs.getClob("profile"); String profile=extractTxtFrom(clob); System.out.println(String.format("Emp id=%d name=%s profile=%s",id,name,profile)); } rs.close(); System.out.println("完成读取"); } catch (Exception e) { e.printStackTrace(); } finally { try { pstmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } private static String extractTxtFrom(Clob clob) throws Exception{ Reader reader=clob.getCharacterStream(); char[] arr=new char[1024]; int length=reader.read(arr); StringBuilder sb=new StringBuilder(); while(length!=-1){ String part=new String(arr,0,length); sb.append(part); length=reader.read(arr); } return sb.toString(); } }
END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-04-30 agumaster 出现实际股票数据
2020-04-30 用Java爬虫爬取凤凰财经提供的沪深A股所有股票代号名称
2020-04-30 agumaster 分页方案
2020-04-30 在MyBatis中采用模糊查询变量的引用标志应当是$而不是#
2018-04-30 【Canvas与艺术】四陀螺结
2015-04-30 使用yum方式在centOS上安装mysql
2014-04-30 JList的基本操作