由于前端时间向数据库插入excel中的数据时,每插入一条数据,就得连接一次数据库;后来发现这种做法不好,如果excel中有很多条数据,就得连接很多次数据库,这样就很浪费资源而且不安全,有时数据库也会报连接次数过多的异常,所以这次换了中处理方法,batch的简单用法。

1.上图就是本次所要上传数据库的数据的excel表,所需jar包:jxl.jar,ojdbc6.jar,使用mysql就mysql-connector-java-5.1.22-bin.jar;

2.创建实体类;

package com.excel.model;

import java.util.Date;

public class PHSample {
private String  id;                  
private String  sample_num;          
private String  customer_name;       
private String  customer_gender;     
private String    test_time;           
private String  height;              
private String  weight;              
private String  bmi;                 
private String  bmi_value;           
private String  pulmonary;           
private String  pulmonary_value;     
private String  steps;               
private String  steps_value;         
private String  grip;                
private String  grip_value;          
private String  flexion;             
private String  flexion_value;       
private String  reaction;            
private String  reaction_value;      
private String  singlestand;         
private String  singlestand_value;   
private String  verticaljump;        
private String  verticaljump_value;  
private String  pushup;              
private String  pushup_value;        
private String  abdominalcurl;       
private String  abdominalcurl_value;
private String  totalscore;          
private String  general;

/*
 * 部门
 */
private String department;
public String getDepartment() {
    return department;
}
public void setDepartment(String department) {
    this.department = department;
}
public PHSample(String customer_name, String customer_gender, String test_time,
        String height, String weight, String bmi, String bmi_value,
        String pulmonary, String pulmonary_value, String steps,
        String steps_value, String grip, String grip_value, String flexion,
        String flexion_value, String reaction, String reaction_value,
        String singlestand, String singlestand_value, String verticaljump,
        String verticaljump_value, String pushup, String pushup_value,
        String abdominalcurl, String abdominalcurl_value, String totalscore,
        String general,String department) {
    this.customer_name = customer_name;
    this.customer_gender = customer_gender;
    this.test_time = test_time;
    this.height = height;
    this.weight = weight;
    this.bmi = bmi;
    this.bmi_value = bmi_value;
    this.pulmonary = pulmonary;
    this.pulmonary_value = pulmonary_value;
    this.steps = steps;
    this.steps_value = steps_value;
    this.grip = grip;
    this.grip_value = grip_value;
    this.flexion = flexion;
    this.flexion_value = flexion_value;
    this.reaction = reaction;
    this.reaction_value = reaction_value;
    this.singlestand = singlestand;
    this.singlestand_value = singlestand_value;
    this.verticaljump = verticaljump;
    this.verticaljump_value = verticaljump_value;
    this.pushup = pushup;
    this.pushup_value = pushup_value;
    this.abdominalcurl = abdominalcurl;
    this.abdominalcurl_value = abdominalcurl_value;
    this.totalscore = totalscore;
    this.general = general;
    this.department = department;
}
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public String getSample_num() {
    return sample_num;
}
public void setSample_num(String sample_num) {
    this.sample_num = sample_num;
}
public String getCustomer_name() {
    return customer_name;
}
public void setCustomer_name(String customer_name) {
    this.customer_name = customer_name;
}
public String getCustomer_gender() {
    return customer_gender;
}
public void setCustomer_gender(String customer_gender) {
    this.customer_gender = customer_gender;
}
public String getTest_time() {
    return test_time;
}
public void setTest_time(String test_time) {
    this.test_time = test_time;
}
public String getHeight() {
    return height;
}
public void setHeight(String height) {
    this.height = height;
}
public String getWeight() {
    return weight;
}
public void setWeight(String weight) {
    this.weight = weight;
}
public String getBmi() {
    return bmi;
}
public void setBmi(String bmi) {
    this.bmi = bmi;
}
public String getBmi_value() {
    return bmi_value;
}
public void setBmi_value(String bmi_value) {
    this.bmi_value = bmi_value;
}
public String getPulmonary() {
    return pulmonary;
}
public void setPulmonary(String pulmonary) {
    this.pulmonary = pulmonary;
}
public String getPulmonary_value() {
    return pulmonary_value;
}
public void setPulmonary_value(String pulmonary_value) {
    this.pulmonary_value = pulmonary_value;
}
public String getSteps() {
    return steps;
}
public void setSteps(String steps) {
    this.steps = steps;
}
public String getSteps_value() {
    return steps_value;
}
public void setSteps_value(String steps_value) {
    this.steps_value = steps_value;
}
public String getGrip() {
    return grip;
}
public void setGrip(String grip) {
    this.grip = grip;
}
public String getGrip_value() {
    return grip_value;
}
public void setGrip_value(String grip_value) {
    this.grip_value = grip_value;
}
public String getFlexion() {
    return flexion;
}
public void setFlexion(String flexion) {
    this.flexion = flexion;
}
public String getFlexion_value() {
    return flexion_value;
}
public void setFlexion_value(String flexion_value) {
    this.flexion_value = flexion_value;
}
public String getReaction() {
    return reaction;
}
public void setReaction(String reaction) {
    this.reaction = reaction;
}
public String getReaction_value() {
    return reaction_value;
}
public void setReaction_value(String reaction_value) {
    this.reaction_value = reaction_value;
}
public String getSinglestand() {
    return singlestand;
}
public void setSinglestand(String singlestand) {
    this.singlestand = singlestand;
}
public String getSinglestand_value() {
    return singlestand_value;
}
public void setSinglestand_value(String singlestand_value) {
    this.singlestand_value = singlestand_value;
}
public String getVerticaljump() {
    return verticaljump;
}
public void setVerticaljump(String verticaljump) {
    this.verticaljump = verticaljump;
}
public String getVerticaljump_value() {
    return verticaljump_value;
}
public void setVerticaljump_value(String verticaljump_value) {
    this.verticaljump_value = verticaljump_value;
}
public String getPushup() {
    return pushup;
}
public void setPushup(String pushup) {
    this.pushup = pushup;
}
public String getPushup_value() {
    return pushup_value;
}
public void setPushup_value(String pushup_value) {
    this.pushup_value = pushup_value;
}
public String getAbdominalcurl() {
    return abdominalcurl;
}
public void setAbdominalcurl(String abdominalcurl) {
    this.abdominalcurl = abdominalcurl;
}
public String getAbdominalcurl_value() {
    return abdominalcurl_value;
}
public void setAbdominalcurl_value(String abdominalcurl_value) {
    this.abdominalcurl_value = abdominalcurl_value;
}
public String getTotalscore() {
    return totalscore;
}
public void setTotalscore(String totalscore) {
    this.totalscore = totalscore;
}
public String getGeneral() {
    return general;
}
public void setGeneral(String general) {
    this.general = general;
}

}
3,创建dao

package com.excel.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DBhelperOracle {
 Connection con=null;
 ResultSet res=null;
// PreparedStatement pre=null;
 PreparedStatement pre=null;
 
 //连接数据库
 public void DBbase(){
     try {
        String driver="oracle.jdbc.driver.OracleDriver";
//        String url="jdbc:oracle:thin:@192.168.224.87:1523:orcl";
//        String userName="gb";
//        String passWord="gb123$";
        
        String url="jdbc:oracle:thin:@192.168.31.35:1521:orcl";
        String userName="gb_hospital";
        String passWord="gb_hospital123$";
            
        Class.forName(driver);
        con=DriverManager.getConnection(url,userName,passWord);
    } catch (Exception e) {
        e.printStackTrace();
    }
 }
 
 //查询
 public ResultSet Search(String sql,String args[]){
     DBbase();
     try {
        pre=con.prepareStatement(sql);
        if(args!=null){
            for(int i=0;i<args.length;i++){
                pre.setString(i+1, args[i]);
            }
            
        }
        res=pre.executeQuery();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return res;
 }
 
 //批量增删改(连接一次数据库)
 public int Adu(String sql,String args[]){
     int falg=0;
     DBbase();
     try {
        pre=con.prepareStatement(sql);
        if(args!=null){
            for(int i=0;i<args.length;i++){
                pre.setString(i+1, args[i]);
            }
            pre.addBatch();//批量添加
        }
        pre.executeBatch();//批量执行
        falg=1;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return falg;
 }
 
}
4.创建service

package com.excel.service;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import jxl.Sheet;
import jxl.Workbook;

import com.excel.model.PHSample;

public class PHSampleService {
   /**
     * 查询指定目录中电子表格中所有的数据
     * @param file 文件完整路径
     * @return
     */
    public static List<PHSample> getAllByExcel(String file){
        
        List<PHSample> PHSample=new ArrayList<PHSample>();
        try {
            Workbook wb=Workbook.getWorkbook(new File(file));
            Sheet sheet=wb.getSheet("Sheet1");
            int cols=sheet.getColumns();//得到总的列数
            int rows=sheet.getRows();//得到总的行数
            
            System.out.println("列数:"+cols+" 行数:"+rows);
            for(int i=1;i<rows;i++){
                for (int j = 1; j < cols; j++) {
                    //第一个是列数,第二个是行数
                    String testTime=sheet.getCell(j++, i).getContents();//默认最左边编号也算一列 所以这里得j++
                    String department=sheet.getCell(j++, i).getContents();
                    String name=sheet.getCell(j++,i).getContents();
                    String sex=sheet.getCell(j++,i).getContents();
                    j++;
                    String height=sheet.getCell(j++,i).getContents();
                    String weight=sheet.getCell(j++,i).getContents();
                    String bmi=sheet.getCell(j,i).getContents();
                    String bmi_value=sheet.getCell(j++,i+1).getContents();
                    String pulmonary=sheet.getCell(j,i).getContents();
                    String pulmonary_value=sheet.getCell(j++,i+1).getContents();
                    String steps=sheet.getCell(j,i).getContents();
                    String steps_value=sheet.getCell(j++,i+1).getContents();
                    String grip=sheet.getCell(j,i).getContents();
                    String grip_value=sheet.getCell(j++,i+1).getContents();
                    String flexion=sheet.getCell(j,i).getContents();
                    String flexion_value=sheet.getCell(j++,i+1).getContents();
                    String reaction=sheet.getCell(j,i).getContents();
                    String reaction_value=sheet.getCell(j++,i+1).getContents();
                    String singlestand=sheet.getCell(j,i).getContents();
                    String singlestand_value=sheet.getCell(j++,i+1).getContents();
                    String verticaljump=sheet.getCell(j,i).getContents();
                    String verticaljump_value=sheet.getCell(j++,i+1).getContents();
                    String pushup=sheet.getCell(j,i).getContents();
                    String pushup_value=sheet.getCell(j++,i+1).getContents();
                    String abdominalcurl=sheet.getCell(j,i).getContents();
                    String abdominalcurl_value=sheet.getCell(j++,i+1).getContents();
                    String totalscore=sheet.getCell(j++,i).getContents();
                    String general=sheet.getCell(j++,i).getContents();
                    
//                    System.out.println("testTime:"+testTime+" name:"+name+" sex:"+sex+" height:"+height
//                            +" weight:"+weight+" bmi:"+bmi+" bmi_value:"+bmi_value);
                    PHSample.add(new PHSample(
                             name,  sex, testTime,
                             height,  weight,  bmi,  bmi_value,
                             pulmonary,  pulmonary_value,  steps,
                             steps_value,  grip,  grip_value,  flexion,
                             flexion_value,  reaction,  reaction_value,
                             singlestand,  singlestand_value,  verticaljump,
                             verticaljump_value,  pushup,  pushup_value,
                             abdominalcurl,  abdominalcurl_value,  totalscore,
                             general,department
                            ));
                }
                i++;//一次循环读两行,目的是跳过下一行
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return PHSample;
    }
    
}
5.创建control

package com.excel.control;

import java.util.List;

import com.excel.dao.DBhelperOracle;
import com.excel.model.PHSample;
import com.excel.service.PHSampleService;

public class PHSampleControl {
public static void main(String[] args) {
    List<PHSample> phSample=PHSampleService.getAllByExcel("C://Users//lidelin//Desktop//华大基因体测汇总16.1.27临时.xls");//查询数据库中所有的数据
    DBhelperOracle dB=new DBhelperOracle();
    
    for (PHSample ph:phSample) {
        String sql="insert into T_PH_SAMPLE2016_Summary(customer_name,  customer_gender, test_time,"+
                             "height,  weight,  bmi,  bmi_value,"+
                             "pulmonary,  pulmonary_value,  steps,"+
                             "steps_value,  grip,  grip_value,  flexion,"+
                             "flexion_value,  reaction,  reaction_value,"+
                             "singlestand,  singlestand_value,  verticaljump,"+
                             "verticaljump_value,  pushup,  pushup_value,"+
                             "abdominalcurl,  abdominalcurl_value,  totalscore,"+
                             "general,department) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        String[] str={
                ph.getCustomer_name(),
                ph.getCustomer_gender(),
                ph.getTest_time(),
                ph.getHeight(),
                ph.getWeight(),
                ph.getBmi(),
                ph.getBmi_value(),
                ph.getPulmonary(),
                ph.getPulmonary_value(),
                ph.getSteps(),
                ph.getSteps_value(),
                ph.getGrip(),
                ph.getGrip_value(),
                ph.getFlexion(),
                ph.getFlexion_value(),
                ph.getReaction(),
                ph.getReaction_value(),
                ph.getSinglestand(),
                ph.getSinglestand_value(),
                ph.getVerticaljump(),
                ph.getVerticaljump_value(),
                ph.getPushup(),
                ph.getPushup_value(),
                ph.getAbdominalcurl(),
                ph.getAbdominalcurl_value(),
                ph.getTotalscore(),
                ph.getGeneral(),
                ph.getDepartment()
                      };
        dB.Adu(sql, str);
    }
}
}

上述经笔者验证可以执行!

因为笔者技术有限,难免有漏洞,还望朋友们多提宝贵意见!

Excel向数据库插入数据(执行一次只需连接一次)-batch简单使用的更多相关文章

  1. Excel向数据库插入数据和数据库向Excel导出数据

    为了熟悉java里工作簿的相关知识点,所以找了“Excel向数据库插入数据和数据库向Excel导出数据”的功能来实现. 注意事项:1,mysql数据库: 2,需要导入的jar包有 jxl.jar,my ...

  2. python通过excel对数据库插入数据

    1.需要有两个包文件xlrd及MySQLdb(其他数据库可以另外找) 2.读取excel文件信息 book = xlrd.open_workbook(文件地址) 3.建立MySQL链接 databas ...

  3. JMeter 利用Jmeter批量数据库插入数据

    利用Jmeter批量数据库插入数据   by:授客 QQ:1033553122 1.   启动Jmeter 2.   添加 DBC Connection Configuration 右键线程组-> ...

  4. 在function module 中向数据库插入数据

    http://www.sapjx.com/abap-function-module.html 1: 应该在function module 中向数据库插入数据

  5. 使用mybatis向oracle数据库插入数据异常

    遇到了使用mybatis向oracle数据库插入数据异常的问题, 具体的报错如下:org.springframework.jdbc.UncategorizedSQLException: ### Err ...

  6. MySQL数据库插入数据出现 ERROR 1526 (HY000): Table has no partition for value xxx

    MySQL数据库插入数据出现ERROR 1526 (HY000): Table has no partition for value xxx工作的时候发现无法插入数据,报错:ERROR 1526 (H ...

  7. 当使用cokie进行数据交互时候,cookie只需存储该对象的id即可不需要存放其他数据;只需在写个接口根据cookie里面的对象id来创建对象

    当使用cokie进行数据交互时候,cookie只需存储该对象的id即可不需要存放其他数据:只需在写个接口根据cookie里面的对象id来创建对象

  8. 向SqlServer数据库插入数据

    Insert Values Insert Select Insert Exec Select Into Bulk Insert Insert Values是最常用的一种插入数据的方式,基本语法如下,表 ...

  9. C#批量向数据库插入数据

    程序中,批量插入数据有两种思路. 1.用for循环,一条一条的插入,经实测,这种方式太慢了(插入一万条数据至少都需要6-7秒),因为每次插入都要打开数据库连接,执行sql,关闭连接,显然这种方式不可行 ...

随机推荐

  1. Lightoj 1370 素数打表 +二分

    1370 - Bi-shoe and Phi-shoe   PDF (English) Statistics   Time Limit: 2 second(s) Memory Limit: 32 MB ...

  2. Python-flask中数据库连接池DBUtils

    一.DBUtils DBUtils是Python的一个用于实现数据库连接池的模块. 连接池的三种模式: 第一种模式:             它的缺点:每一次请求反复创建数据库的链接,链接的次数太多 ...

  3. 实时监测contenteditable(可编辑文档)的内容发生改变

    如果是文本框用onchange,oninput,onpropertychange都可以实时监控值发生变化,但是div设置了属性contenteditable(可编辑文档)就不管用了. 最简单的方法用o ...

  4. php如何查看扩展是否开启

    php如何查看扩展是否开启 一.总结 一句话总结:php -m 1.查看php已安装扩展命令 ? php -m 2.phpinfo();这是最常用的方法,但那么多扩展一时还真不太好找.? 3.exte ...

  5. 《Advanced Bash-scripting Guide》学习(四):一个显示时间日期登录用户的脚本

    本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者杨春敏 黄毅 编写一个脚本,显示时间和日期,列出所有的登录用户,显示系统的更新时间.然后这个脚本 ...

  6. ZOJ - 3430 ac自动机

    这题主要就是解码过程很恶心,不能用char存,一共wa了20发 题意:先给n串加密后的字符,然后m串加密后的字符,解码之后求n对应每个m的匹配数,很显然的ac自动机 加密过程是先用对应ascii表的标 ...

  7. 删除OSX中第三方的「偏好设置」程序(.prefPane)

    打开Finder,按Command+Shift+G,输入 /Library/PreferencePanes ~/Library/PreferencePanes 前一个是全局的配置项目录,第二个是当前用 ...

  8. Windows7+VS2008 下编译Subversion 1.8.3

    一.需要的软件包 1.python-2.7.5.msi  http://www.python.org/ 2.ActivePerl-5.8.8.822-MSWin32-x86-280952.msi  h ...

  9. Redis源码解析(1)——源码目录介绍

    概念 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些 ...

  10. 15 Python 迭代器和生成器

    什么是迭代 (iterable) 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. 可以直接作用于for循环的对象统称为可迭代对象(Iterable). 可以被next()函数 ...