请教各位大大,关于把word excel pdf 插入 clob字段的方法。在网上找到个存txt到clob的,放.doc .xls文件做参数,就出现乱码。麻烦各位大大帮忙看下
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.*,java.io.*,oracle.sql.CLOB"%>
<%@page import="com.logcd.common.OracleClob"%>
<%@page import="org.apache.commons.io.*" %><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'readDoc.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<%!
//yz_ncms_db.properties
private String propFile = "/yz_sv_db.properties"; public Properties getPropertiesFiles()
{
Properties prop = new Properties();
try{
System.out.println("loading properties file:"+this.propFile+"");
prop.load(getClass().getResourceAsStream(propFile));
System.out.println("loaded successly!");
}
catch(FileNotFoundException e){
e.printStackTrace();
System.out.println("properties file can not be found!");
}
catch(IOException e){
e.printStackTrace();
}
return prop;
}
public Connection getConnection(){
Connection conn=null;
String driver = null;
String url = null;
String username = null;
String password = null;
String key = null;
String value = null;
try
{
Properties prop = getPropertiesFiles();
Set set = prop.keySet();
for(Iterator it = set.iterator(); it.hasNext(); )
{
key = (String)it.next();
// value = prop.getProperty(key);
if(key.equals("jdbc.sqlserver.driver")){
driver = prop.getProperty(key);
}else if(key.equals("jdbc.sqlserver.url")){
url = prop.getProperty(key);
}else if(key.equals("jdbc.sqlserver.username")){
username = prop.getProperty(key);
}else if(key.equals("jdbc.sqlserver.password")){
password = prop.getProperty(key);
}
}
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url,username,password);
}
catch(Exception e)
{
e.printStackTrace();
}
return conn;
}
/**
* 将CLOB转换成字串
* @param clob
* @return
*/
public static String convertClobToString(CLOB clob) {
String reString = "";
try {
Reader is = clob.getCharacterStream();// 得到流
BufferedReader br = new BufferedReader(is);
String s = br.readLine();
StringBuffer sb = new StringBuffer();
while (s != null) {
sb.append(s);
sb.append("\n");
s = br.readLine();
}
reString = sb.toString().trim();
} catch(Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
return reString;
}
%>
<%
Connection con=null;
Statement stmt=null;
PreparedStatement ps=null;
ResultSet rs=null;
try{
con=getConnection();
con.setAutoCommit(false);
/*
插clob
File files = new File("E:\\down.xls");
out.println("<br>name:"+files.getName());
OracleClob oc=new OracleClob();
String data=oc.getFileContentAsString("E:\\down.xls",true);
out.println("<br>date:"+data);
String sql="insert into TB_DOC t VALUES(1,empty_clob(),?)";
ps=con.prepareStatement(sql);
ps.setString(1,files.getName());
if(ps.executeUpdate()==1){
String sqlUpd = "select CONTENT from TB_DOC t where ID = 1 for update";
stmt=con.createStatement();
rs=stmt.executeQuery(sqlUpd);
if (rs.next()) {
// 得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
CLOB clob = (CLOB) rs.getClob("CONTENT");
Writer outStream = clob.setCharacterStream(0L);
// data是传入的字符串,定义:String data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length); outStream.flush();
outStream.close();
}
}
*/
/*****************
* 读clob *
****************/
String readCLob="select CONTENT from TB_DOC t where t.ID = 1";
System.out.println("readCLob:"+readCLob);
stmt=con.createStatement();
rs=stmt.executeQuery(readCLob);
//out.println(rs.next());
if (rs.next()) { CLOB clob = (CLOB) rs.getClob("CONTENT");
System.out.println("clob:"+clob);
//String result = convertClobToString(clob);
String result="";
try {
Reader is = clob.getCharacterStream();// 得到流
BufferedReader br = new BufferedReader(is);
String s = br.readLine();
StringBuffer sb = new StringBuffer();
while (s != null) {
sb.append(s);
sb.append("\n");
s = br.readLine();
}
result = sb.toString().trim();
} catch(Exception e) {
out.println(e.getMessage());
e.printStackTrace();
}
out.println("<br>result:"+result);
FileUtils.writeStringToFile(new File("E:\\ss.xls"),result,"utf-8");
}
}catch(Exception e){
con.rollback();
e.printStackTrace();
}finally{
if(con!=null)con.close();
}
%>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.*,java.io.*,oracle.sql.CLOB"%>
<%@page import="com.logcd.common.OracleClob"%>
<%@page import="org.apache.commons.io.*" %><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'readDoc.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<%!
//yz_ncms_db.properties
private String propFile = "/yz_sv_db.properties"; public Properties getPropertiesFiles()
{
Properties prop = new Properties();
try{
System.out.println("loading properties file:"+this.propFile+"");
prop.load(getClass().getResourceAsStream(propFile));
System.out.println("loaded successly!");
}
catch(FileNotFoundException e){
e.printStackTrace();
System.out.println("properties file can not be found!");
}
catch(IOException e){
e.printStackTrace();
}
return prop;
}
public Connection getConnection(){
Connection conn=null;
String driver = null;
String url = null;
String username = null;
String password = null;
String key = null;
String value = null;
try
{
Properties prop = getPropertiesFiles();
Set set = prop.keySet();
for(Iterator it = set.iterator(); it.hasNext(); )
{
key = (String)it.next();
// value = prop.getProperty(key);
if(key.equals("jdbc.sqlserver.driver")){
driver = prop.getProperty(key);
}else if(key.equals("jdbc.sqlserver.url")){
url = prop.getProperty(key);
}else if(key.equals("jdbc.sqlserver.username")){
username = prop.getProperty(key);
}else if(key.equals("jdbc.sqlserver.password")){
password = prop.getProperty(key);
}
}
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url,username,password);
}
catch(Exception e)
{
e.printStackTrace();
}
return conn;
}
/**
* 将CLOB转换成字串
* @param clob
* @return
*/
public static String convertClobToString(CLOB clob) {
String reString = "";
try {
Reader is = clob.getCharacterStream();// 得到流
BufferedReader br = new BufferedReader(is);
String s = br.readLine();
StringBuffer sb = new StringBuffer();
while (s != null) {
sb.append(s);
sb.append("\n");
s = br.readLine();
}
reString = sb.toString().trim();
} catch(Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
return reString;
}
%>
<%
Connection con=null;
Statement stmt=null;
PreparedStatement ps=null;
ResultSet rs=null;
try{
con=getConnection();
con.setAutoCommit(false);
/*
插clob
File files = new File("E:\\down.xls");
out.println("<br>name:"+files.getName());
OracleClob oc=new OracleClob();
String data=oc.getFileContentAsString("E:\\down.xls",true);
out.println("<br>date:"+data);
String sql="insert into TB_DOC t VALUES(1,empty_clob(),?)";
ps=con.prepareStatement(sql);
ps.setString(1,files.getName());
if(ps.executeUpdate()==1){
String sqlUpd = "select CONTENT from TB_DOC t where ID = 1 for update";
stmt=con.createStatement();
rs=stmt.executeQuery(sqlUpd);
if (rs.next()) {
// 得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
CLOB clob = (CLOB) rs.getClob("CONTENT");
Writer outStream = clob.setCharacterStream(0L);
// data是传入的字符串,定义:String data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length); outStream.flush();
outStream.close();
}
}
*/
/*****************
* 读clob *
****************/
String readCLob="select CONTENT from TB_DOC t where t.ID = 1";
System.out.println("readCLob:"+readCLob);
stmt=con.createStatement();
rs=stmt.executeQuery(readCLob);
//out.println(rs.next());
if (rs.next()) { CLOB clob = (CLOB) rs.getClob("CONTENT");
System.out.println("clob:"+clob);
//String result = convertClobToString(clob);
String result="";
try {
Reader is = clob.getCharacterStream();// 得到流
BufferedReader br = new BufferedReader(is);
String s = br.readLine();
StringBuffer sb = new StringBuffer();
while (s != null) {
sb.append(s);
sb.append("\n");
s = br.readLine();
}
result = sb.toString().trim();
} catch(Exception e) {
out.println(e.getMessage());
e.printStackTrace();
}
out.println("<br>result:"+result);
FileUtils.writeStringToFile(new File("E:\\ss.xls"),result,"utf-8");
}
}catch(Exception e){
con.rollback();
e.printStackTrace();
}finally{
if(con!=null)con.close();
}
%>
</body>
</html>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货