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 ...
随机推荐
- 强化:把treeview的QString路径转换为QModelIndex节点,有了节点就什么都好办了
http://doc.qt.io/qt-4.8/qdirmodel.html#index-2 甚至还能直接调用setData: setData(const QModelIndex &index ...
- Codeforces 706D Vasiliy's Multiset(可持久化字典树)
[题目链接] http://codeforces.com/problemset/problem/706/D [题目大意] 要求实现一个集合中的三个操作,1:在集合中加入一个元素x,2:从集合中删除一个 ...
- Spring 构造注入 传參数
1. 提供相应的构造方法 //构造器注入 public class Bean6 { private String name; private Integer age; // 服务于构造器 ...
- jQuery validate api(转)
官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...
- 更改mysql 数据库名称
//创建新数据库 CREATE DATABASE hbwebTemporary; //移植每个表 RENAME TABLE hbweb.aircraft_info TO hbwebTemporary. ...
- poj 3259Wormholes (spfa最短路径)
#include<stdio.h> #include<string.h> #include<limits.h> #include<queue> usin ...
- hough变换中,直线方程从XY空间转换到参数空间的转换过程
XY空间直线方程:y=kx+b 参数空间直线方程:xcosθ+ysinθ=ρ 直线方程从XY空间转换到参数空间过程的转换过程: k=tan(π-α)=tan(-α)=-tanα=-cotθ=-cosθ ...
- Matlab常用小技巧及部分快捷键
Matlab常用小技巧一: 1. m文件如果是函数,保存的文件名最好与函数名一致,这点都很清楚.不过容易疏忽的是,m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成.原因是 ...
- C实现二叉树(模块化集成,遍历的递归与非递归实现)
C实现二叉树模块化集成 实验源码介绍(源代码的总体介绍):header.h : 头文件链栈,循环队列,二叉树的结构声明和相关函数的声明.LinkStack.c : 链栈的相关操作函数定义.Queue. ...
- HDU2018-母牛的故事
描述: 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? 代码: 第n年的牛,等于第n-1年的牛(已有的)+第n-3年 ...