项目中遇到一个问题,对方公司把打印好的报表数据存到数据库中,实际上就是把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. Qt项目管理(33个规则)

    2016-06-20 花莫弦 小小杂货铺LY 一.qmake的介绍 qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具. 手写Makefile是比较困难并且容易 ...

  2. C#中隐式操作CMD命令行窗口

    原文:C#中隐式操作CMD命令行窗口 MS的CMD命令行是一种重要的操作界面,一些在C#中不那么方便完成的功能,在CMD中几个简单的命令或许就可以轻松搞定,如果能在C#中能完成CMD窗口的功能,那一定 ...

  3. 10个必备的移动UI设计资源站

    http://www.uisdc.com/10-necessary-mobile-ui-design-resources# 交互设计中如何增加趣味性.提升愉悦http://www.uisdc.com/ ...

  4. HelloX项目github协同开发指南

    概述 为了提高协同开发效率,HelloX项目已托管到github网站上.根据目前的开发进展,创建了下列几个子项目: HelloX操作系统内核项目:https://github.com/hellox-p ...

  5. Android杂谈--ListView之BaseAdapter的使用

    话说开发用了各种Adapter之后感觉用的最舒服的还是BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却能实现很多自己喜欢的列表布局,比如ListView.GridView.Gal ...

  6. poj 3259Wormholes (spfa最短路径)

    #include<stdio.h> #include<string.h> #include<limits.h> #include<queue> usin ...

  7. zoj 1409 Communication System

    /*如果要一个物体的多种属性,最好用结构体,不要用二维数组或者多维数组.用多维数组进行关键字排序很不稳定 */ /*给每个设备的所有价格排序,每个设备选取恰好比已知带宽大的价格(这个时候的比例最大) ...

  8. Android百度地图的简单实现

    2015-06-13 最近学习了百度地图API的简单开发,现记录如下:(持续更新中) 百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,包括JavaScript API.Web服务AP ...

  9. 无法在web服务器上启动调试,服务器不支持对ASP.NET 或ATL Server应用程序进行调试。

    无法在web服务器上启动调试,服务器不支持对ASP.NET 或ATL Server应用程序进行调试. a>.DCOM配置里的属性灰色不可用的解决方法,   1>.管理工具->组件服务 ...

  10. ASP.NET jQuery 随笔 使用jQuery UI的Autocomplete方法实现文本框的自动搜索填充功能

    首先当然是去下载JQuery UI ,这里这里是下载地址http://jqueryui.com/ 第一步是点击这里 第二步选择你想要下载的主题进行下载 我这里是选择的cupertino主题包 点击圆圈 ...