⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oraclebloboperation.java

📁 以前做的一个j2ee的项目
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package gov.gdlt.ssgly.taxcore.taxdao.wdsc;

import oracle.sql.BLOB;
import java.io.*;
import java.sql.*;
import com.ibatis.sqlmap.client.SqlMapClient;
import gov.gdlt.ssgly.taxcore.comm.util.StringUtils;
import java.util.*;
import gov.gdlt.ssgly.taxcore.taxblh.wdsc.WDSCmbwhBLH;
import gov.gdlt.ssgly.taxcore.comm.servicelocator.JDBCLocator;
import java.util.zip.ZipOutputStream;
import java.util.zip.ZipEntry;
import gov.gdlt.ssgly.taxcore.comm.log.LogWritter;
import gov.gdlt.ssgly.taxcore.taxblh.wdsc.zipwdsc.ZipServer;
import gov.gdlt.ssgly.taxcore.taxblh.wdsc.WDSCconstant;

/**
 * <p>Title: </p>
 *
 * <p>Description: 广东地税税收管理员工作平台</p>
 *
 * <p>Copyright: Copyright (c) 2005 广东省地方税务局,广州市地方税务局</p>
 *
 * <p>Company: 广州地税</p>
 *
 * @author 张承华
 * @version 1.0
 */
public class OracleBlobOperation {
    LogWritter log = new LogWritter();

    public OracleBlobOperation() {
    }

    //通过ibais处理
    //将指定的文件转化成blob
    //参数说明
    //sqlMap:SqlMapClient
    //wd:WDSCwdDAO
    //tablename:需要写入的大字段所在的表
    //colName:表中的字段名,可以多个
    //key:查询条件
    //返回值:
    public static void insertOracleBlob(WDSCwdDAO wd) throws
            SQLException, FileNotFoundException, IOException, Exception {

        Connection conn = null;
        boolean defaultCommit = false;
        String sql = "";

        try {

            conn = wd.getM_conn();//JDBCLocator.getInstance().getJDBCConnection();

            defaultCommit = conn.getAutoCommit();
            conn.setAutoCommit(false);
            Statement stmt = conn.createStatement();

            if (!WDSCconstant.boolBatchProcess) {

                //t_begin = Calendar.getInstance().getTimeInMillis();
                java.util.Date date = new java.util.Date();
                //java.sql.Date sqlDate = new java.sql.Date(date.getTime());

                Calendar cal = Calendar.getInstance();
                cal.setTime(date);
                int year, month, day, hour, minute, second, millisecond; //MILLISECOND
                year = cal.get(Calendar.YEAR);
                month = cal.get(Calendar.MONTH) + 1;
                day = cal.get(Calendar.DATE);
                hour = cal.get(Calendar.HOUR_OF_DAY);
                minute = cal.get(Calendar.MINUTE);
                second = cal.get(Calendar.SECOND);
                millisecond = cal.get(Calendar.MILLISECOND);
                String dayTime_q = String.valueOf(year) + "-" +
                                   String.valueOf(month) +
                                   "-" + String.valueOf(day) + " " +
                                   String.valueOf(hour) + ":" +
                                   String.valueOf(minute) + ":" +
                                   String.valueOf(second);
                //t_end = Calendar.getInstance().getTimeInMillis();
                //System.out.println("取时间耗时:" + String.valueOf(t_end-t_begin));

                //如果此纳税人内部码在 t_wdsc_wd 中已经存在,则删除这条记录,以保证当前纳税人编码在当前表的文档数据唯一
                //如果需要将历史纪录保存在此表,可以将sql语句改为 DELETE T_WDSC_WD WHERE WD_MC LIKE '" + wd.getNsrnbm() + "年月%'
                sql = " DELETE T_WDSC_WD WHERE WD_MC = '" + wd.getM_wdmc() + "' ";
                //long delwd_s = Calendar.getInstance().getTimeInMillis();
                stmt.execute(sql);
                //long delwd_e = Calendar.getInstance().getTimeInMillis();
                //System.out.println("delWd():" + String.valueOf(delwd_e-delwd_s));

                sql = " INSERT INTO T_WDSC_WD ( " +
                      " WD_MC, WD_SM, WD_NR, WDSC_SJ, WDXG_SJ, MB_BM, CZY_BM, SWJG " +
                      " ) VALUES ( " +
                      "    '" + wd.getM_wdmc() + "', '" + wd.getM_wdsm() +
                      "', EMPTY_BLOB(), " +
                      "    to_date('" + dayTime_q +
                      "', 'YYYY-MM-DD HH24:MI:SS'), sysdate, '" + wd.getM_wdmbbm() +
                      "', " +
                      "    '" + wd.getM_wdczy() + "', '" + wd.getM_swjg() + "' ) ";
                //System.out.println(sql);
                //long insert_s = Calendar.getInstance().getTimeInMillis();
                stmt.executeUpdate(sql);
                //long insert_e = Calendar.getInstance().getTimeInMillis();
                //System.out.println("insertWd():" + String.valueOf(insert_e-insert_s));

            }
            sql = " SELECT " +
                " WD_NR " +
                " FROM T_WDSC_WD " +
                " WHERE WD_MC = '" + wd.getM_wdmc() + "' " +
                " AND WDSC_SJ >= to_date('" + wd.getM_strWdscsj() + "', 'YYYY-MM-DD HH24:MI:SS') " +
                " AND SWJG like '" + wd.getM_swjg() + "' " +
                "  FOR UPDATE " +
                "  ";
            //System.out.println(sql);
            //long update_s = Calendar.getInstance().getTimeInMillis();
            ResultSet rs = stmt.executeQuery(sql);
            if (rs.next()) {
                wd.setM_wdnr(rs.getBlob("WD_NR"));
            }

            //long update_e = Calendar.getInstance().getTimeInMillis();
            //System.out.println("updateWd():" + String.valueOf(update_e-update_s));

            BufferedOutputStream out = null;
            OutputStream outstream  = null;

            java.sql.Blob blob = (java.sql.Blob)wd.getM_wdnr();
            if (blob instanceof oracle.sql.BLOB){
                outstream = ((oracle.sql.BLOB)blob).getBinaryOutputStream();//((oracle.sql.BLOB)blob).getBinaryOutputStream();
            } else if (blob instanceof weblogic.jdbc.vendor.oracle.
                       OracleThinBlob) {
                outstream = ((weblogic.jdbc.vendor.oracle.OracleThinBlob)blob).getBinaryOutputStream();
            }
            String s= wd.getM_strWdNr();
            //long write_s = Calendar.getInstance().getTimeInMillis();
            StringReader sReader = null;
            if (false) {//没有压缩
                sReader = new StringReader(s);
                out = new BufferedOutputStream(outstream);
/*
                int c;
                while ((c = sReader.read()) != -1) {
                    out.write(c);
                    //outTest.write(c);
                }
*/
                out.write(s.getBytes("iso-8859-1"));
                out.flush();
                outstream.flush();
                outstream.close();
                out.close();
                sReader.close();
            } else {//采用压缩
                ZipServer.compress(outstream, s);

                outstream.flush();
                outstream.close();
            }
            //long write_e = Calendar.getInstance().getTimeInMillis();
            //System.out.println("writeWd():" + String.valueOf(write_e-write_s));
            conn.commit();
            if (rs != null) rs.close();
            stmt.close();
            //long commit_e = Calendar.getInstance().getTimeInMillis();
            //System.out.println("commit():" + String.valueOf(commit_e-write_s));
        } catch (SQLException e) {
            e.printStackTrace();
            throw new SQLException(e.getMessage() + sql);
        } catch (Exception e) {
            e.printStackTrace();
            throw new Exception(e.getMessage()+ sql);
        } finally {
            conn.setAutoCommit(defaultCommit);
            //conn.close();
        }
    }



    //////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////




    public static void updateOracleBlob(WDSCwdDAO wd, String tablename, String colName, String key) throws
            SQLException, FileNotFoundException, IOException, Exception {
        SqlMapClient sqlMap = wd.getSqlMap();

        Statement stmt = null;
        boolean defaultCommit = false;
        Connection conn = null;
        try {
            //sqlMap.startTransaction();

            //conn = sqlMap.getCurrentConnection();
            conn = JDBCLocator.getInstance().getJDBCConnection();
            defaultCommit = conn.getAutoCommit();
            conn.setAutoCommit(false);
            String sql = "select " + colName;
            sql = sql + " FROM " + tablename + " WHERE " + key + " FOR UPDATE ";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -