项目中遇到一个问题,对方公司把打印好的报表数据存到数据库中,实际上就是把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+"&paramName=" + 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对象转为字符串的更多相关文章

  1. json对象转为字符串,当做参数传递时加密解密

    [son对象  字符串 互相转行] 比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex ...

  2. javascript对象转为字符串

    function getStringTime(time){ //年 year = time.getFullYear(); //月 month = time.getMonth() if(String(m ...

  3. JSON对象和字符串的互相转换

    1.JSON.parse; 作用:将JavaScript对象表示法的JSON字符串转换为对象(字符串转对象) 语法:JSON.parse(text [, reviver]) text    必选. 一 ...

  4. json对象和字符串的相互转换

    JSON.stringify(obj)       将JSON对象转为字符串. JSON.parse(string)       将字符串转为JSON对象格式. 后台给你数据的时候,有时候会给你字符串 ...

  5. 第168天:json对象和字符串的相互转换

    json对象和字符串的相互转换 1.json对象和字符串的转换 在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和pa ...

  6. json对象与字符串相互转换

    JSON 语法 JSON 语法规则 在 JS 语言中,一切都是对象.因此,任何支持的类型都可以通过 JSON 来表示,例如字符串.数字.对象.数组等.但是对象和数组是比较特殊且常用的两种类型: 对象表 ...

  7. js或者jq的string类型或者number类型的相互转换及json对象与字符串的转换

    1.将值乘以1,将string类型转为number类型 //算合计价值function summoney(money) { var zijin = $("#main_xm_dam09&quo ...

  8. java对象转为json字符串

    1.使用fastjson开源json工具类库 2.java类未添加get()和set()方法,java对象初始化时,使用fastjson解析,得到的json字符串有时为空{} 3.Java对象转为js ...

  9. [转]JS中对象与字符串的互相转换

    原文地址:http://www.cnblogs.com/luminji/p/3617160.html 在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题: thr ...

随机推荐

  1. 三种尺寸:手机SIM卡使用指南

    毫无疑问目前卖的最火的手机非iPhone 5s莫属,相信仍有不少网友目前处于观望之中,由于iPhone 5s和iPhone 5c采用与iPhone相同的Nano-SIM卡,因此不少新用户在使用之前也徒 ...

  2. TP的SDK的调用

    1,SDK简介 本SDK是基于ThinkPHP开发类库扩展,因此只能在ThinkPHP平台下使用(ThinkPHP版本要求2.0以上).DEMO中用到了控制器分层,因此运行DEMO需使用ThinkPH ...

  3. linux多线程示例

    #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <pthread.h& ...

  4. iOS网络开发-AFNetworking请求asp.net WebService

    看到园子有位朋友需要使用AFN框架请求 WebService,所以就整理了一下,demo下载链接在底部 编写WebService可以看这篇博客 http://www.cnblogs.com/linmi ...

  5. ZOJ 3080 ChiBi(spfa)

    ZOJ Problem Set - 3080 ChiBi Time Limit: 5 Seconds      Memory Limit: 32768 KB watashi's mm is so pr ...

  6. Hibernate学习之延迟加载

    转自:http://www.cnblogs.com/xiaoluo501395377/p/3371776.html 在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通 ...

  7. 什么是RAW?

    RAWRAW是一个PHP网站开发系统,使用简单.快捷,核心功能是通过模版组合网站,模版可以自由开发,使开发者不再受传统开发的那种头晕限制,只需要通过填写表单即可完成网站的开发.此外,开发者还可以通过开 ...

  8. poj 1041 John's trip 欧拉回路

    题目链接 求给出的图是否存在欧拉回路并输出路径, 从1这个点开始, 输出时按边的升序输出. 将每个点的边排序一下就可以. #include <iostream> #include < ...

  9. XMLTProcessor根据XSLT样式规则将节点转换为document对象

    最近使用Firefox进行网页的调试,发现有些javascript XSLT处理xml的语句仅仅支持IE浏览器.而网络中的一些介绍Javascript XSLT 处理XML的文章基本上都是依据Ajax ...

  10. Android studio如何使用SVN进行版本控制?

    通过这两天对Android Studio的研究,终于搞通了Android Studio的基本操作及与SVN的相关关联操作(这样才能在公司的开发工作中使用):Google年底将会停止ADT插件的更新和支 ...