批量导入数据库 及部分更新操作

package saveToDB;

import java.text.ParseException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.sql.BatchUpdateException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.io.*;

import entity.StockPrice;

import manager.StockPriceCollecter;

import tool.MyConn;

public class SaveToMySQL {
	/**
	 * updateCount
	 * TO: 为这星期的更新操作准备
	 * @param updateCounts
	 */
	public static void checkUpdateCounts(int[] updateCounts) {
	    for (int i = 0; i < updateCounts.length; i++) {
	      if (updateCounts[i] >= 0) {
	        System.out.println("Successfully executed; updateCount=" + updateCounts[i]);
	      } else if (updateCounts[i] == Statement.SUCCESS_NO_INFO) {
	        System.out.println("Successfully executed; updateCount=Statement.SUCCESS_NO_INFO");
	      } else if (updateCounts[i] == Statement.EXECUTE_FAILED) {
	        System.out.println("Failed to execute; updateCount=Statement.EXECUTE_FAILED");
	      }
	    }
	  }
	/**
	 * 存储stockPriceList到数据库中
	 * @return
	 * @throws IOException 
	 * @throws ParseException 
	 * @throws ClassNotFoundException 
	 * @throws SQLException 
	 */
public void print_s(List<StockPrice> stockPriceList) throws IOException, ParseException, ClassNotFoundException, SQLException{
	
	Connection conn = null;
	PreparedStatement pstmt = null;
	System.out.println("GOOG,Connect the DataBase");
	
	StockPriceCollecter collecter = new StockPriceCollecter();
	stockPriceList =  collecter.getStockPriceInfoByDate();
	Iterator it  = stockPriceList.iterator();
	try {
		conn = MyConn.getConn();
		conn.setAutoCommit(false);
		String query = "insert into stockdde(StockCode,date,Ddx,Ddy,Ddz,changeHand,rise) values(? , ? , ? , ? , ? , ? , ? )";
		pstmt = conn.prepareStatement(query);
		while(it.hasNext()){
			//以下进行格式转换
			
				java.sql.Date sqlDate = new java.sql.Date(((Date) it.next()).getTime());			
				double sqlDdx = Double.parseDouble(String.valueOf(it.next())); 
				double sqlDdy = Double.parseDouble(String.valueOf(it.next())); 
				double sqlDdz = Double.parseDouble(String.valueOf(it.next())); 
				String sqlChangeHand =  (String) it.next();
				String sqlRise =  (String) it.next();
				pstmt.setString(1, "600004");
			    pstmt.setDate(2, sqlDate);
			    pstmt.setDouble(3, sqlDdx);
			    pstmt.setDouble(4, sqlDdy);
			    pstmt.setDouble(5, sqlDdz);
			    pstmt.setString(6, sqlChangeHand);
			    pstmt.setString(7, sqlRise);
			    pstmt.addBatch();
			                                              	
			}
		//int[] updateCounts = pstmt.executeBatch();//计算更新条目 为本周的部分工作
	   // checkUpdateCounts(updateCounts);
		pstmt.executeBatch();
	    conn.commit(); 
		
	} catch (BatchUpdateException e) {
	      int[] updateCounts = e.getUpdateCounts();
	      checkUpdateCounts(updateCounts);
	      try {
	        conn.rollback();
	      } catch (Exception e2) {
	        e.printStackTrace();
	      }
	    } catch (Exception e) {
	      e.printStackTrace();
	    } finally {
	      pstmt.close();
	      conn.close();
	      System.out.println("GOOG,Finish");
	    }
	}
		   
		

	
	private double ValueOf(Object next) {
		// TODO Auto-generated method stub
		return 0;
	}	
}

你可能感兴趣的:(java,sql,工作)