我用jdbc作了個定時更新數據庫的功能,當插入1w條數據時候沒點問題,當插入2w條數據時候,就報鏈接超時的錯誤接着,可是程序仍是沒有掛掉,不知道是什麼緣由就解?java
- package com.jgre.org;
-
- import java.sql.Connection;
-
- import java.sql.Date;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.List;
-
-
- public class DB {
- static int precount=1000;
-
- public static Connection getConnect() throws Exception{
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
- Connection conn= DriverManager.getConnection("jdbc:sqlserver://146.12.62.208:1433;DatabaseName=LHJGXN", "sa", "flying-321");
- return conn;
- }
-
- public static void free(ResultSet rs,PreparedStatement ps,Connection conn){
- try {
- if(rs!=null) rs.close();
- if(ps!=null) ps.close();
- if(conn!=null) conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- public static void free(PreparedStatement ps,Connection conn){
- try {
- if(ps!=null) ps.close();
- if(conn!=null) conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- public synchronized int insertObject(List<AJXX> list){
- list=DB.initArray(list);
- Connection conn=null;
- PreparedStatement ps=null;
- try {
- conn=DB.getConnect();
- conn.setAutoCommit(false);
- ps=conn.prepareStatement("truncate table LHJGXN.dbo.TB_AJXX");
- ps.executeUpdate();
-
- long startTime=System.currentTimeMillis();
- String sql="insert into LHJGXN.dbo.TB_AJXX( " +
- "AH,NH,ZH,SAXH,AY,LARQ,LAR,CBT,SJCBT, " +
- "CBR,AJLB,SPCX,SYCX,SFDA,SFYA,AJSJ,ZZRQ," +
- "JARQ, JAFS,GDRQ,DTXP,FDSXDQR,KCSXTS,SXDQR," +
- "AJZT,XLABZ)values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
- ps=conn.prepareStatement(sql);
- for(int i=0;i<list.size();i++){
- System.out.println(i);
- AJXX a=list.get(i);
- if(a.getAH()!=null&&!a.getAH().equals("")){
- ps.setString(1, a.getAH());
- ps.setInt(2, a.getNH());
- ps.setString(3, a.getZH());
- ps.setInt(4, a.getSAXH());
- ps.setInt(5, a.getAY());
- if(tDate(a.getLARQ())==0){
- ps.setDate(6, null);
- }else{
- ps.setDate(6, new Date(tDate(a.getLARQ())));
- }
- ps.setString(7, a.getLAR());
- ps.setString(8, a.getCBT());
- ps.setString(9, a.getSJCBT());
- ps.setString(10, a.getCBR());
- ps.setString(11, a.getAJLB());
- ps.setString(12, a.getSPCX());
- ps.setString(13, a.getSYCX());
- ps.setString(14, a.getSFDA());
- ps.setString(15, a.getSFYA());
- ps.setString(16, a.getAJSJ());
- if(tDate(a.getZZRQ())==0){
- ps.setDate(17, null);
- }else{
- ps.setDate(17, new Date(tDate(a.getZZRQ())));
- }
- if(tDate(a.getJARQ())==0){
- ps.setDate(18, null);
- }else{
- ps.setDate(18, new Date(tDate(a.getJARQ())));
- }
- ps.setString(19, getJAFS(a.getJAFS(),conn));
- if(tDate(a.getGDRQ())==0){
- ps.setDate(20, null);
- }else{
- ps.setDate(20, new Date(tDate(a.getGDRQ())));
- }
- ps.setInt(21, a.getDTXP());
- ps.setString(22, a.getFDSXDQR());
- ps.setInt(23, a.getKCSXTS());
- ps.setString(24, a.getSXDQR());
- ps.setString(25, a.getAJZT());
- ps.setString(26, a.getXLABZ());
- ps.addBatch();
- }
- if((i+1)%precount==0){
- ps.executeBatch();
- }
- }
-
- conn.commit();
- ps.clearBatch();
- long endTime=System.currentTimeMillis();
- System.out.println("插入數據時間爲:"+(endTime-startTime)+"ms");
- return (int)(endTime-startTime);
- } catch (Exception e) {
- try {
- conn.rollback();
- } catch (SQLException e1) {
- e1.printStackTrace();
- }
- e.printStackTrace();
- PrintLog.writeLog("error:"+e.toString());
- }finally{
- DB.free(ps, conn);
- }
- return -1;
- }
- public static int getAYBH(String AYMC){
- Connection conn=null;
- PreparedStatement ps=null;
- ResultSet rs=null;
- try {
- conn=DB.getConnect();
- ps=conn.prepareStatement("select AYBH from LHJGXN.dbo.TB_AY where AYMC=?");
- ps.setString(1, AYMC);
- rs=ps.executeQuery();
- if(rs.next()){
- return rs.getInt(1);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- DB.free(rs, ps, conn);
- }
- return -1;
- }
- public static String getZH(String ZHMC){
- Connection conn=null;
- PreparedStatement ps=null;
- ResultSet rs=null;
- try {
- conn=DB.getConnect();
- ps=conn.prepareStatement("select ZH from LHJGXN.dbo.TB_ZHXX where ZHMC=?");
- ps.setString(1, ZHMC);
- rs=ps.executeQuery();
- if(rs.next()){
- return rs.getString(1);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- DB.free(rs, ps, conn);
- }
- return null;
- }
- public static int getInfo(String cmd,String MC,Connection conn){
- PreparedStatement ps=null;
- ResultSet rs=null;
- String sql=null;
- if(cmd.equalsIgnoreCase("JAFS")){
- sql="select JAFS from LHJGXN.dbo.TB_JAFS where MC=?";
- }else if(cmd.equalsIgnoreCase("AJLB")){
- sql="select AJLB from LHJGXN.dbo.TB_JAFS where MC=?";
- }else if(cmd.equalsIgnoreCase("SPCX")){
- sql="select SPCX from LHJGXN.dbo.TB_JAFS where MC=?";
- }
- try {
- conn=DB.getConnect();
- ps=conn.prepareStatement(sql);
- ps.setString(1, MC);
- rs=ps.executeQuery();
- if(rs.next()){
- return rs.getInt(1);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- DB.free(rs, ps, conn);
- }
- return -1;
- }
- public static long tDate(String d){
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
- try {
- if(d!=null&&!d.equals("")){
- java.util.Date date=sdf.parse(d);
- return date.getTime();}
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return 0;
- }
- public static String getJAFS(String jafs,Connection conn){
- if(jafs!=null&&!jafs.trim().equals("")){
- PreparedStatement ps=null;
- ResultSet rs=null;
- try {
- conn=DB.getConnect();
- ps=conn.prepareStatement("select JAFS from LHJGXN.dbo.TB_JAFS where MC=?");
- ps.setString(1, jafs);
- rs=ps.executeQuery();
- if(rs.next()){
- return rs.getString(1);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- DB.free(rs,ps, conn);
- }
- }
- return null;
- }
- public static List<AJXX> initArray(List<AJXX> d){
- while(d!=null&d.size()>0&d.size()%precount!=0){
- AJXX a=new AJXX();
- d.add(a);
- }
- System.out.println("格式化後的數據長度:"+d.size());
- return d;
- }
-
- }