如何使用JDBC+Struct2框架的poi读取Excel的数据然后插入Sql Server数据库中

Action层
package org.cupd.spdb.report.importexcel.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.cupd.spdb.report.importexcel.service.CardBinService;
import org.cupd.spdb.report.importexcel.service.impl.CardBinServiceImpl;

/**
 * 
 * @author 
 * @date 2014-01-21
 * excel数据读取与导入后台管理
 */
public class CardBinAction extends DispatchAction {
	public ActionForward showCardBinPage(ActionMapping mapping, ActionForm actionform,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		return mapping.findForward("showCardBinPage");
	}
	
	
private  CardBinService CardBinService=new CardBinServiceImpl();
	
	public int insertCardBin()
	{
		int result=CardBinService.insertDB();
		
		return result;
	}
	





service层





package org.cupd.spdb.report.importexcel.service.impl;

import java.util.List;

import org.cupd.spdb.report.importexcel.dao.CardBinDao;
import org.cupd.spdb.report.importexcel.dao.impl.CardBinDaoImpl;
import org.cupd.spdb.report.importexcel.entity.BizCardBin;
import org.cupd.spdb.report.importexcel.service.CardBinService;


public class CardBinServiceImpl implements CardBinService {
	private CardBinDao cardBinDao=new CardBinDaoImpl();
	public CardBinDao getCardBinDao() {
		return cardBinDao;
	}
	public void setCardBinDao(CardBinDao cardBinDao) {
		this.cardBinDao = cardBinDao;
	}
	public List<BizCardBin> getBeanList() {
		return beanList;
	}
	public void setBeanList(List<BizCardBin> beanList) {
		this.beanList = beanList;
	}
	private List<BizCardBin> beanList;
	
	
	public int insertDB(){
		int flag=0;
		try {
			cardBinDao.insertDB();
			flag=1;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return flag;

	}
}


Impl实现层


package org.cupd.spdb.report.importexcel.dao.impl;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.cupd.spdb.report.importexcel.dao.CardBinDao;

import com.websurf.spdb.bo.DBConnBOImpl;

public class CardBinDaoImpl implements CardBinDao {
	
	private static final Log log=LogFactory.getLog(CardBinDaoImpl.class);
	private static DBConnBOImpl dbConn = new DBConnBOImpl();
		 PreparedStatement ps = null;
		 Connection conn = null;
		 ResultSet rs = null;
		 private String filePath="E:\\Microsoft Excel.xlsx";
		 
		 /**
		  * 插入数据
		  */
		 public boolean insertDB(){ 
		   boolean flag=true;
		    try {
		     //文件流指向excel文件   
		    // FileInputStream fin=new FileInputStream(filePath);   
		     XSSFWorkbook workbook=new XSSFWorkbook(filePath);//创建工作薄   
		     XSSFSheet sheet=workbook.getSheetAt(0);//得到工作表   
		     XSSFRow row=null;//对应excel的行   
		     XSSFCell cell=null;//对应excel的列   
		       
		     int totalRow=sheet.getLastRowNum();//得到excel的总记录条数 
		     log.info("得到excel的总记录数"+totalRow);
		     //以下的字段一一对应数据库表的字段   
			 String cardName="";
			 String cardType="";
			 String cardBin="";
			 String cardLength="";
			 String activityCode="";
			 String note="";
		     String sql ="insert into BizCardBin(cardName,cardType,cardBin,cardLength,activityCode,note) values(?,?,?,?,?,?)";
		     for(int i=2;i<=totalRow;i++){   
			      row=sheet.getRow(i);   
			      cell=row.getCell((short) 0);   
			      cardName=cell.getStringCellValue().toString();   
			      cell=row.getCell((short) 1);   
			      cardType=cell.getStringCellValue().toString();   
			      cell=row.getCell((short) 2);   
			      cardBin=cell.getStringCellValue().toString();   
			      cell=row.getCell((short) 3); 
			      cardLength=cell.getStringCellValue().toString();
			      cell=row.getCell((short) 4);   
			      activityCode=cell.getStringCellValue().toString();   
			      cell=row.getCell((short) 5);
			      note=cell.getStringCellValue().toString();
			      	 conn=dbConn.getConnection();
			      	 log.info("获取JDBC连接完成");
				     ps=conn.prepareStatement(sql);   
				     ps.setString(1,cardName);   
				     ps.setString(2,cardType);   
				     ps.setString(3,cardBin);   
				     ps.setString(4,cardLength);   
				     ps.setString(5,activityCode); 
				     ps.setString(6,note);
				       
				     ps.execute();   
				     System.out.println("preparestatement successful");
			     } 
		     	dbConnClose(conn, dbConn);
				psClose(ps, rs);
		       
			    } catch (FileNotFoundException e) {   
			    	flag=false;   
			    	e.printStackTrace();   
			    } catch(IOException ex){   
			    	flag=false;   
			     	ex.printStackTrace();   
			    } catch(SQLException exx){   
			    	flag=false;   
			    	exx.printStackTrace();   
			    }
		    
			   return flag;  
			 }  
		 public static void main(String[] args) {
			 CardBinDaoImpl e=new CardBinDaoImpl();
			 e.insertDB();
		 }
		
  
	    /** 
	     * 插入数据 只需要传入插入sql即可 
	     * 插入sql的样例:insert into t_department values('D004','金融部'); 
	     * @param insert 插入语句 
	     * @return 
	     * @throws SQLException  
	     */  
		/*public int insertCardBin(BizCardBin cardBin){
			int result=0;
			PreparedStatement ps = null;
			Connection conn = null;
			String sql ="insert into BizCardBin(cardName,cardTyoe,cardBin,cardLength,cardLength,activityCode,note) values(?,?,?,?,?,?,?)";
				try {
					conn=dbConn.getConnection();
					log.info("获取JDBC连接完成");
					ps = conn.prepareStatement(sql);
					ps.setString(1, cardBin.getCardName());
					ps.setString(2, cardBin.getCardType());
					ps.setString(3, cardBin.getCardBin());
					ps.setString(4, cardBin.getCardLength());
					ps.setString(5, cardBin.getActivityCode());
					ps.setString(6, cardBin.getNote());
					result = ps.executeUpdate();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					log.error("SQL Exception "+ e);
					e.printStackTrace();
					return 0;
				}finally{
					dbConnClose(conn, dbConn);
					psClose(ps, rs);
				}
				return result;
		}
	*/
	
	public void dbConnClose(Connection conn,DBConnBOImpl dbConn){
		if(conn!=null){
			dbConn.close(conn);
		}
	}
	
	private static void psClose(final PreparedStatement preparedStatement,
			final ResultSet resultSet) {
		try {
			if (resultSet != null) {
				resultSet.close();
			}
			if (preparedStatement != null) {
				preparedStatement.close();
			}
		} catch (SQLException e) {
			log.error("error", e);
		}
	}
	
}
求各位大神指点 指出哪里不恰当之处



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值