Clob对象转为字符串
项目中遇到一个问题,对方公司把打印好的报表数据存到数据库中,实际上就是把html存在Oracle中,然后需要我们在社保系统里进行查询。
但是他们把数据存放在B数据库,而我们的社保系统用的数据库是B。A和B都是Oracle数据库
这样就遇到一下几个问题:
1.读取B数据的Clob对象,但是会报错:
ORA-22992:无法使用从远程表选择的LOB定位符 ,解决方法如:http://www.cnblogs.com/Sunnor/p/5368530.html
2 怎么把Clob对象读取出来,然后写到jsp里。
这个也简单:
具体转换办法如:
public 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;
}
}
项目代码:
点击一个查询结果,然后双击调用某一个function(){},在这个function里使用window对象的showModelessDialog方法,
/**
* 报表 非模态窗口
*/
function history(paramName) {
var title = encodeURIComponent('报表查询');
//弹出非模态对话框,并加上时间戳以防止缓存
var url = "cmpbb.do?title="+title+"¶mName=" + paramName+"&_t="+new Date().getTime();
var strFeatures = "resizable:yes;status:no;help:no;scroll:yes;center:yes;";
strFeatures = strFeatures+"dialogWidth:"+1300+"px;"+"dialogHeight:"+800+"px";
window.showModelessDialog(url,"",strFeatures);
//window.showModalDialog(url,"",strFeatures);
}
然后会跳转到cmpbb.jsp,
cmpbb.jsp代码:
<%@page import="cn.sinobest.example.service.cbzlzx.CbzlzxService"%>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*, javax.sql.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.math.*"%>
<%@ page import="cn.sinobest.framework.util.DTOUtil"%>
<%@ page import="cn.sinobest.framework.util.Util"%> <%
//获取查询条件
String para1 = (String) request.getParameter("paramName");//
if(para1 == null){
para1 = "XXXXXXX";
}
String bianhao = (String) request.getParameter("bianhao");//
if(bianhao == null){
bianhao = "YYYYY";
}
//获取模态窗口传过来的值,
String SERIALNUM = DTOUtil.getValue("paramName");
//建连接
Connection con = Util.getConnection();
//设置不自动提交,因为往全局临时表插入数据不能够提交,一旦提交全局临时表里就没数据了。
con.setAutoCommit(false);
Statement stmt = null;
ResultSet rs = null;
String idcard = null;
String strclob = "";
CbzlzxService serv = new CbzlzxService();
try{
// 准备语句执行对象
stmt = con.createStatement();
//if(SERIALNUM.length()==0||"".equals(SERIALNUM)){
// SERIALNUM = "20160408101621331200002";
//}
//String sql = " SELECT * FROM gtemp_printserialnum_2 where SERIALNUM = '"+SERIALNUM+"'";
//gtemp_printserialnum_,全局临时表,只有当前连接有效,要是重新开另外开一个链接就没法在这个表里查数据
//String sql_ = "insert into gtemp_printserialnum_ select * from printserialnum@dbl_to_ytj ";
//stmt.execute(sql_);//执行插入语句
//String sql = " SELECT * FROM gtemp_printserialnum_ where SERIALNUM = '"+SERIALNUM+"'";
String sql = " SELECT * FROM printserialnum where SERIALNUM = '"+SERIALNUM+"'";
rs = stmt.executeQuery(sql);
System.out.println("读取CLOB对象:AAC001 1= "+sql); if (rs.next()) {
System.out.println("读取CLOB对象:AAC001 2= ");
//1 获取结果集中的Clob字段值
Clob b = rs.getClob("PRINTTABLE");
//2 调用写好的工具方法吧Clob对象转换为字符串
strclob = serv.ClobToString(b);
/*
3 这一步很重要,触屏打印传过来的Clob字段里的html信息没有加上<html></html>标记,
使用模态窗口打开的时候可能显示为空
*/
strclob = "<HTML>"+strclob+"</HTML>";
//4 用jsp内置对象把转换后的html字符串打印到网页上
out.print(strclob);
System.out.println("-----:"+strclob);
//response.reset();
//这个设置很重要,否则客户端浏览器不能识别输出内容,导致弹出下载的对话框。 //response.setContentType("image/jpeg");
//response.setContentType("text/html");
//ServletOutputStream sos = response.getOutputStream();
//sos.write(bs,0,bs.length);
//sos.flush();
}else { System.out.println("读取CLOB对象:AAC001 3= ");
//response.sendRedirect(request.getContextPath()+"/images/NonePhoto.JPG");
}
}catch(Exception e){
System.out.println("读取CLOB对象:AAC001 4= ");
e.printStackTrace();
}finally{
//rs.last();
//len = rs.getRow();
System.out.println("读取CLOB对象:AAC001 5= "+idcard+",len:");
rs.close();
stmt.close();
con.close();
}
%>
<script type="text/javascript">
alert('---'+kkk);
var para1="<%=para1%>";
var bianhao="<%=bianhao%>";
//alert('para1:'+para1);
//alert('bianhao:'+bianhao);
</script>
Clob对象转为字符串的更多相关文章
- json对象转为字符串,当做参数传递时加密解密
[son对象 字符串 互相转行] 比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex ...
- javascript对象转为字符串
function getStringTime(time){ //年 year = time.getFullYear(); //月 month = time.getMonth() if(String(m ...
- JSON对象和字符串的互相转换
1.JSON.parse; 作用:将JavaScript对象表示法的JSON字符串转换为对象(字符串转对象) 语法:JSON.parse(text [, reviver]) text 必选. 一 ...
- json对象和字符串的相互转换
JSON.stringify(obj) 将JSON对象转为字符串. JSON.parse(string) 将字符串转为JSON对象格式. 后台给你数据的时候,有时候会给你字符串 ...
- 第168天:json对象和字符串的相互转换
json对象和字符串的相互转换 1.json对象和字符串的转换 在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和pa ...
- json对象与字符串相互转换
JSON 语法 JSON 语法规则 在 JS 语言中,一切都是对象.因此,任何支持的类型都可以通过 JSON 来表示,例如字符串.数字.对象.数组等.但是对象和数组是比较特殊且常用的两种类型: 对象表 ...
- js或者jq的string类型或者number类型的相互转换及json对象与字符串的转换
1.将值乘以1,将string类型转为number类型 //算合计价值function summoney(money) { var zijin = $("#main_xm_dam09&quo ...
- java对象转为json字符串
1.使用fastjson开源json工具类库 2.java类未添加get()和set()方法,java对象初始化时,使用fastjson解析,得到的json字符串有时为空{} 3.Java对象转为js ...
- [转]JS中对象与字符串的互相转换
原文地址:http://www.cnblogs.com/luminji/p/3617160.html 在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题: thr ...
随机推荐
- grunt安装使用简介
grunt是一个基于任务的实现自动化工作流的平台 安装 npm uninstall grunt -g //卸载grunt npm install grunt-cli -g //安装grunt-cli ...
- hdoj Scaena Felix
Scaena Felix Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- ICE
一.Slice-to-C++映射 1.引言 其映射定义:怎样把Slice数据类型翻译成C++类型,客户怎样调用操作.传递参数.处理错误. C++映射完全是线程安全的.例如,类的引用机制针对并行访问机制 ...
- linux下emacs安装
1.下载地址:http://ftp.gnu.org/pub/gnu/emacs/ 下载文件:emacs-24.2.tar.gz 步骤: 一.安装依赖文件: (先进入root:终端中输入 su -) ...
- Google Maps 学习笔记(二)地图天气预报服务 2014.06.04
地图天气预报服务:一,获取天气预报信息:二,解析天气预报信息:三,在地图上加载天气预报信息: Yahoo!提供的天气预报服务采用流行的RSS输出结果,接口地址如下: http://weather.ya ...
- CSS3新动画效果
CSS3添加了几个动画效果的属性,通过设置这些属性,可以做出一些简单的动画效果而不需要再去借助JavaScript.CSS3动画的属性主要分为三类:transform.transition以及anim ...
- HTML标记语言和CSS样式的简单运用(Nineteenth Day)
曾经励志下去要坚持把每天所学的知识记录下来,可是坚持了几天后,就觉得自己坚持不下去了....这几天自己好好的想了想,觉得不能坚持也得要坚持,因为要对自己负责,所以得学会逼着自己去做,只有这样才能把一件 ...
- USB 开发
http://blog.csdn.net/myarrow/article/details/8484113
- (转)Windows重启延迟删除,重命名技术原理
所谓重启延迟删除技术,就是在操作系统启动前删除或者替换文件! 说起重启延迟删除,大家可能都很陌生,但是实际上,该功能已经被各种软件所采用:如安装Windows 补丁程序(如:HotFix.Servic ...
- A Byte of Python 笔记(10)输入/输出:文件和储存器
第12章 输入/输出 大多数情况下,我们需要程序与用户交互.从用户得到输入,然后打印一些结果. 可以分别使用 raw_input 和 print 语句来完成这些功能.对于输出,可以使用多种多样的 s ...