Predo pre = new Predo(); //Calendar calendar= Calendar.getInstance(); long start = System.currentTimeMillis(); pre.createTableFid(rootcodelist[j], "2006-1-1", "2009-10-15"); long end = System.currentTimeMillis(); long sum = end - start; System.out.println("start="+start+" end="+end+" sum="+sum); Thread.sleep(20);
} } }
createTableFid 方法里,rs 没及时关闭,不同的数据库对未及时关闭的 statement / result 的处理可能不一样,结果不保证。main 方法之前的有一段 catch 没写任何处理代码,这是你的代码原样贴上来的话就需要去改一下。
import java.util.*;
import java.util.Date;
import java.sql.*;import java.util.Calendar;import com.rongrun.homo.logic.FIDTreat;
import com.rongrun.util.publicDAO;
import com.sun.java_cup.internal.internal_error;
import com.sun.org.apache.xpath.internal.operations.And;public class Predo extends Thread{
public void createTableFid(String rootcode,String startTime,String overTime) throws Exception{
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
String name="";
try{conn.close();}catch(Exception e){}
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://192.168.1.201:1433;DatabaseName=queryDatabase","iDW61","iDW61");
stmt=conn.createStatement();
String strSQL = "select name from sysobjects";
rs=stmt.executeQuery(strSQL);
while(rs.next()){
String sName = rs.getString(name);
if(sName.equals("fttb_"+rootcode)){
name = sName;
}
}
}catch(Exception e){}
finally{
stmt.close();
conn.close();
}
if(name.length()==0){
Connection conn1=null;
Statement stmt1=null;
ResultSet rs1=null;
try{conn1.close();}catch(Exception e){}
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn1=DriverManager.getConnection("jdbc:microsoft:sqlserver://192.168.1.201:1433;DatabaseName=queryDatabase","iDW61","iDW61");
stmt1=conn1.createStatement();
String strSQL1 = "create table fttb_" + rootcode + "(code INT primary key IDENTITY (1, 1),tasktime DATETIME,fid BIGINT not null,url ntext,ft ntext,AB00 ntext,PUBTIME datetime,sourcefrom varchar(50),publisher varchar(50),homoflag BIGINT,Negaflag INT,wordcat INT not null,wordorder INT not null,weight INT not null,webname varchar(50),spreadrode INT)";
//System.out.println("strSQL1="+strSQL1);
rs1=stmt1.executeQuery(strSQL1);
//System.out.println("aaa"+strSQL1);
}catch(Exception e){}
finally {
stmt1.close();
conn1.close();
}
}
else{} publicDAO pd = new publicDAO();
startTime = "'"+startTime+"'";
overTime = "'"+overTime+"'";
String sqla = "select * from cattb where rootcode=" + rootcode + " and (dt > " + startTime + " and dt <" + overTime + ") order by fid";
System.out.println("sqla="+sqla);
ArrayList datalist = pd.getRsList("CATDB",sqla);
if(datalist.size() == 0){}
String[] fidlist = new String[datalist.size()];
int[] spreadroad = new int[datalist.size()];
int[] wordcat = new int[datalist.size()];
int[] wordorder = new int[datalist.size()];
int[] weight = new int[datalist.size()];
String[] webname = new String[datalist.size()];
int[] d0 = new int[datalist.size()];
int[] d1 = new int[datalist.size()];
int[] d2 = new int[datalist.size()];
int[] d3 = new int[datalist.size()];
int[] d4 = new int[datalist.size()];
int[] d5 = new int[datalist.size()];
int[] d6 = new int[datalist.size()];
int[] Negaflag = new int[datalist.size()];
HashMap dmap3;
for(int i=0;i<datalist.size()-1;i++){
dmap3 = (HashMap)datalist.get(i);
fidlist[i] = (String)dmap3.get("fid");
//spreadroad[i] = Integer.parseInt((String)dmap3.get("spreadroad"));
wordcat[i] = Integer.parseInt((String)dmap3.get("wordcat"));
wordorder[i] = Integer.parseInt((String)dmap3.get("wordorder"));
weight[i] = Integer.parseInt((String)dmap3.get("weight"));
//webname[i] = "www.baidu.com";
webname[i] = (String)dmap3.get("webname");
//if(webname[i].length() == 0){webname[i] = "null";}
d0[i] = Integer.parseInt((String)dmap3.get("d0"));
d1[i] = Integer.parseInt((String)dmap3.get("d1"));
d2[i] = Integer.parseInt((String)dmap3.get("d2"));
d3[i] = Integer.parseInt((String)dmap3.get("d3"));
d4[i] = Integer.parseInt((String)dmap3.get("d4"));
d5[i] = Integer.parseInt((String)dmap3.get("d5"));
d6[i] = Integer.parseInt((String)dmap3.get("d6"));
if(d0[i] > 510000 || d1[i] > 510000 || d2[i] > 510000 || d3[i] > 510000 || d4[i] > 510000 || d5[i] > 510000 || d6[i] > 510000){
Negaflag[i] = 1;
}
else{
Negaflag[i] = 0;
}
}
String[] url = new String[fidlist.length];
String[] ft = new String[fidlist.length];
String[] ab00 = new String[fidlist.length];
String[] pubtime = new String[fidlist.length];
long[] homoflag = new long[fidlist.length];
String[] sourcefrom = new String[fidlist.length];
String[] publisher = new String[fidlist.length]; for(int i=0;i<fidlist.length-1;i++){
System.out.println("bbb");
publicDAO pd1 = new publicDAO();
String sql1 = "select * from FTTB where fid = "+ fidlist[i];
ArrayList datalist1 = pd1.getRsList("FTDB", sql1);
if(datalist1.size() == 0){continue;}
HashMap fidMap;
for(int j=0;j<datalist1.size();j++){
fidMap = (HashMap)datalist1.get(j);
url[i] = (String)fidMap.get("url");
ft[i] = (String)fidMap.get("ft");
ab00[i] = (String)fidMap.get("ab00");
pubtime[i] = ((String)fidMap.get("pubdate")).substring(0,10);
sourcefrom[i] = (String)fidMap.get("sourcefrom");
publisher[i] = (String)fidMap.get("publisher");
}
Long[] title = new Long[fidlist.length];
Long[] content = new Long[fidlist.length];
publicDAO pd2 = new publicDAO();
String sql2 = "select * from fidsimilar where fid= "+ fidlist[i];
ArrayList datalist2 = pd2.getRsList("FPDB",sql2);
if(datalist2.size() == 0){continue;}
HashMap fidMapNew;
for(int k=0;k<datalist2.size();k++){
fidMapNew = (HashMap)datalist2.get(k);
title[i] = Long.parseLong((String)fidMapNew.get("fid_title"));
content[i] = Long.parseLong((String)fidMapNew.get("fid_content"));
}
if(title[i] == 0 && content[i] == 0){
homoflag[i] = 0;
}
else{
if(title[i] != 0){
homoflag[i] = title[i];
}
else{
homoflag[i] = content[i];
}
}
////得到系统时间
//Calendar cal=Calendar.getInstance();
// //-0代表0天前这个时候的时间
//cal.add(Calendar.DAY_OF_YEAR,-0);
//SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//String nowtime=sdf.format(cal.getTime());
//System.out.println(nowtime);
Date date = new Date();
Calendar time = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Connection conn2=null;
Statement stmt2=null;
try{conn2.close();}catch(Exception e){}
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn2=DriverManager.getConnection("jdbc:microsoft:sqlserver://192.168.1.201:1433;DatabaseName=queryDatabase","iDW61","iDW61");
stmt2=conn2.createStatement();
double random = java.lang.Math.random();//生成随机数
int iRandom = (int)(random*10);
if(iRandom>4){//将生成值控制在1~4
iRandom = iRandom/3;
}
if(iRandom==0){//将生成值控制在1~4
iRandom = 1;
}
String strSQL2 = "insert into fttb_" + rootcode + " VALUES('"+dateFormat.format(date.getTime())+"','"+fidlist[i]+"','"+url[i]+"','"+ft[i]+"','"+ab00[i]+"','"+pubtime[i]+"','"+sourcefrom[i]+"','"+publisher[i]+"','"+homoflag[i]+"','"+Negaflag[i]+"','"+wordcat[i]+"','"+wordorder[i]+"','"+weight[i]+"','"+webname[i]+"','" + iRandom + "')";
System.out.println("strSQL2="+strSQL2);
stmt2.execute(strSQL2);
}catch(Exception e){}
}
}
public static void main(String[] args) throws Exception{
publicDAO pd = new publicDAO();
String sqla = "select distinct rootcode from cattb";
ArrayList datalist = pd.getRsList("CATDB",sqla);
String[] rootcodelist = new String[datalist.size()];
HashMap rootcodeMap;
for(int j=0;j<datalist.size();j++){
rootcodeMap = (HashMap)datalist.get(j);
rootcodelist[j] = (String)rootcodeMap.get("rootcode");
Predo pre = new Predo();
//Calendar calendar= Calendar.getInstance();
long start = System.currentTimeMillis();
pre.createTableFid(rootcodelist[j], "2006-1-1", "2009-10-15");
long end = System.currentTimeMillis();
long sum = end - start;
System.out.println("start="+start+" end="+end+" sum="+sum);
Thread.sleep(20);
} }
}
conn2没有关闭。