关于oracle CLOB的操作

oracle CLOB的处理:

insert:

				Writer outStream = null;
				try {
					ApplicationContext ctx = null;
					ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
					SqlSessionFactory sqlSessionFactory = (SqlSessionFactory )ctx.getBean("sqlSessionFactory");
					SqlSession sqlSession = sqlSessionFactory.openSession();
					Connection con = sqlSession.getConnection();
					con.setAutoCommit(false);  // 隐式提交
					Statement st = con.createStatement();
					String sqlguid = "select sys_guid() from dual";
					ResultSet rsguid = st.executeQuery(sqlguid);
					String sysguid = "";
					if(rsguid.next()){
						sysguid = rsguid.getString(1);
					}
					//插入一个空对象empty_clob()
					String sql = "insert into RES_KNOW(KNOW_UUID, KNOW_NICK, KNOW_AUTHOR, KNOW_DATE, KNOW_CT, KNOW_TYPE, KNOW_TITLE, KNOW_KEY, KNOW_CATE, KNOW_CONTENT)" +
				  		"values('"+sysguid+"','"+resKnow.getKnowNick()+"','"+resKnow.getKnowAuthor()+"',SYSDATE,'"+resKnow.getKnowCt()+"','"+resKnow.getKnowType()+"','"+resKnow.getKnowTitle()+
				  		"','"+resKnow.getKnowKey()+"','"+resKnow.getKnowCate()+"',empty_clob())";
					st.executeUpdate(sql);
					//锁定数据行进行更新,不用for update锁定不可以插入clob
					String sql2 = "select KNOW_CONTENT from RES_KNOW WHERE KNOW_UUID='"+sysguid+"' for update";
					ResultSet rs = st.executeQuery(sql2);
					if (rs.next()){
						//得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
						oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("KNOW_CONTENT");
						outStream = clob.getCharacterOutputStream();
						char[] c = resKnow.getKnowContent().toCharArray();
						outStream.write(c, 0, c.length);
					}
					outStream.flush();
					outStream.close();
					con.commit();
					con.close();
					ResponseJson(getJSON(getSuccess(true, "添加成功")));
				}

select:

			try{
				List<ResKnow> KnowList = new ArrayList<ResKnow>();
				Reader inStream = null;
				// 获得数据库连接
				ApplicationContext ctx = null;
				ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
				SqlSessionFactory sqlSessionFactory = (SqlSessionFactory )ctx.getBean("sqlSessionFactory");
				SqlSession sqlSession = sqlSessionFactory.openSession();
				Connection con = sqlSession.getConnection();
				con.setAutoCommit(false);  // 隐式提交
				Statement st = con.createStatement();
				String sql = "select * from RES_KNOW where KNOW_UUID='"+resKnow.getKnowUuid()+"'";
				ResultSet rs = st.executeQuery(sql);
				ResKnow know;
				while (rs.next()){
					know = new ResKnow();
					know.setKnowUuid(rs.getString("KNOW_UUID"));
					know.setKnowUnid(rs.getInt("KNOW_UNID"));
					know.setKnowName(rs.getString("KNOW_NAME"));
					know.setKnowAuthor(rs.getString("KNOW_AUTHOR"));
					know.setKnowType(rs.getString("KNOW_TYPE"));
					know.setKnowCt(rs.getString("KNOW_CT"));
					know.setKnowDate(rs.getString("KNOW_DATE"));
					know.setKnowNick(rs.getString("KNOW_NICK"));
					know.setKnowKey(rs.getString("KNOW_KEY"));
					know.setKnowTitle(rs.getString("KNOW_TITLE"));
					know.setKnowCate(rs.getString("KNOW_CATE"));
					java.sql.Clob clob = rs.getClob("KNOW_CONTENT");
					if(clob != null){
						inStream = clob.getCharacterStream();
						char[] c = new char[(int) clob.length()];
						inStream.read(c);
						know.setKnowContent(new String(c));
						inStream.close();
					}
					KnowList.add(know);
				}
				inStream.close();
				con.commit();
				con.close();
			}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值