您的位置:首页 > 编程语言 > Java开发

WebService传递大字符串

2015-10-21 11:42 651 查看
写一个小例子

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;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web service java