📄 oraclebloboperation.java
字号:
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 + -