WebService传递大字符串
来源:互联网 发布:普拉达高仿淘宝店 编辑:程序博客网 时间:2024/05/22 05:05
写一个小例子
WebService开发相对简单了 但是遇到了一个传递大字符串 并入库的需求
所以字符串入库肯定是CLOB 因为是大字符串(需求是传递一个1M左右的字符串 然后返回一个1M的字符串)
最初觉得只是一个小需求
写一个WebService接口 然后里面用JDBC链接数据库 然后插入 最后返回 OK搞定
几分钟写完之后 觉得还行
然后测试
发现别说1M 就是上了几KB的数据 都进不去库 报错原因是数据量比较大 字符串太长
网上找了好多 有很多人说 理论上来讲WebService传递是没有大小限制的 又是更改连接时间 又是压缩字符串 或者是分包之类的办法
办法太杂 不晓得怎么弄 一时没了头绪 心中一万只草泥马奔腾而过……
(不知道大伙有没有这么感觉过 遇到困难了 找答案 然后看到一堆不想干 或者问题符合按照他给的办法就不是那么回事的了)
后来自己测试了一遍用存储过程写的SQL
效果比较好 终于能上10KB了 先高兴一下
然后20KB 的时候 又呵呵了…… %¥#%¥#¥%(各种骂娘中……)
最后找到了一个方法 抱着试一个疗程的态度 终于成功了
下面付上代码
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.util.Date;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.OraclePreparedStatement;
import oracle.sql.CLOB;
public class IntoOrclImpl implements IntoOrcl {
public static void main(String[] args) {
IntoOrclImpl ioi = new IntoOrclImpl();
String str = "你";
str = str+str+str+str+str+str+str+str+str+str;
str = str+str+str+str+str+str+str+str+str+str;
str = str+str+str+str+str+str+str+str+str+str;
str = str+str+str+str+str+str+str+str+str+str;
str = str+str+str+str+str+str+str+str+str+str;
str = str+str+str+str+str+str+str+str+str+str;
ioi.intoOral(str);
}
@Override
public int intoOral(String demo) {
String driver = "oracle.jdbc.OracleDriver";// 驱动字符串
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";// 链接字符串
String user = "demo";// 用户名
String password = "demo";// 密码
Connection con = null;
OraclePreparedStatement pstm = null;
ResultSet rs = null;
boolean flag=false;
int i = 0;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
String sql = "DECLARE" +
" REALLYBIGTEXTSTRING CLOB := ?;" +
"BEGIN" +
" INSERT INTO demo VALUES(REALLYBIGTEXTSTRING);" +
"end ;";
CLOB clob = new CLOB((OracleConnection) con);
clob = oracle.sql.CLOB.createTemporary((OracleConnection) con, true,
1);
OracleConnection oCon = (OracleConnection) con;
pstm = (OraclePreparedStatement) oCon
.prepareCall(sql);
pstm.setString(1, demo);
i = pstm.executeUpdate();
flag=true;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭执行通道
if(pstm!=null){
try {
pstm.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭连接通道
try {
if(con!=null&&(!con.isClosed())){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(flag){
System.out.println("执行成功!");
}else{
System.out.println("执行失败!");
}
return i;
}
}
- WebService传递大字符串
- 慎用WebService传递大数据
- webservice向服务端传递字符串数组
- xfire 开发webservice, 传递中文字符串乱码问题
- webservice 参数传递
- webservice+axis文件传递
- webservice+axis文件传递
- WebService如何传递HashTable
- webservice传递ResultSet结果
- webservice 传递自定义类
- WebService如何传递HashTable
- webservice 传递特殊字符,
- 实习笔记6 WebService Axis2 传递Gzip压缩后的字符串乱码问题
- 用WebService传递XML数据
- android使用webservice传递对象
- JQuery Ajax WebService传递参数
- WebService CXF学习:对象传递
- webservice上传大文件
- HUB、Switch、Router在OSI模型层次信息
- 3.9、BI之SSIS之Foreach-ADO枚举
- NW.js把web程序打包成桌面exe文件
- mysqldumpslow使用说明总结
- 3.10、BI之SSIS之序列容器与文件系统任务
- WebService传递大字符串
- Linux 下安装eclipse for Python 的插件Pydev
- 3.11、BI之SSIS之执行SQL任务
- android面试题集锦
- Build a Python IDE for Windows with Notepad++ and IPython
- Android Fragment 真正的完全解析(下)
- 三个对腰痛很有效的动作
- Android:实现 代码控制 EditText 只能输入固定长度的数字
- Min Stack