最近做项目的时候,想要扫描一个excel表中的数据,把它循环插入到数据库里,但是在插入到数据里的时候,发现不能持续的把数据,也就是说每一次我只能插入10条数据,后来我首先在c3p0的配置文件里看了一下,发现里面有一个maxPoolSize属性,也就是说
这个只允许一个Connnection对象连接MySQL数据库最大连接次数为10次,所以修改了这个属性,修改了以后确实,能够增加插入的次数,但是这样不靠谱,后来,在执行完插入到数据里的操作以后,就关闭数据库连接,加上这句代码:conn.close();
但是,这样每一次插入数据库就关闭连接,然后再打开,感觉对数据库的压力太大,后来又试一下数据库的批量处理,用batch()函数
Workbook rwb=Workbook.getWorkbook(new File("D:\\s1\\s2.xls"));
Sheet rs=rwb.getSheet(0);//或者rwb.getSheet(0)
int clos=rs.getColumns();//得到所有的列
int rows=rs.getRows();//得到所有的行
float sum=0;
System.out.println(rows);
int count=0;
Object[][] params = new Object[31][7];
for(int i=100;i<131;i++){
for(int j=4;j<clos;j++){
//第一个是列数,第二个是行数
sum+=Float.parseFloat(rs.getCell(j,i).getContents()); //Parse(rs.getCell(j,i).getContents());
}
sum/=4;
Date d1=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(rs.getCell(1,i).getContents());
String str="20"+rs.getCell(1,i).getContents();
d1=sdf.parse(str);
System.out.println(d1);
params[count][0]=1;
params[count][1]=1;
params[count][2]=d1;
params[count][3]=d1;
params[count][3]=10;
params[count][4]=220;
params[count][5]=sum;
params[count][6]=10;
count++;
// conn.close();
}
Connection conn=null;
conn=JdbcUtils.getConnection();
TxQueryRunner tr=new TxQueryRunner();
String sql="insert into Tb_Handle_User_DayUseElectricity (UserId,CollectionPoint,UseTime,Current,Voltage,ActivePower,ReactivePower)values(?,?,?,?,?,?,?)";
int[] r1=tr.batch( conn,sql, params);
System.out.println(count);
Sheet rs=rwb.getSheet(0);//或者rwb.getSheet(0)
int clos=rs.getColumns();//得到所有的列
int rows=rs.getRows();//得到所有的行
float sum=0;
System.out.println(rows);
int count=0;
Object[][] params = new Object[31][7];
for(int i=100;i<131;i++){
for(int j=4;j<clos;j++){
//第一个是列数,第二个是行数
sum+=Float.parseFloat(rs.getCell(j,i).getContents()); //Parse(rs.getCell(j,i).getContents());
}
sum/=4;
Date d1=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(rs.getCell(1,i).getContents());
String str="20"+rs.getCell(1,i).getContents();
d1=sdf.parse(str);
System.out.println(d1);
params[count][0]=1;
params[count][1]=1;
params[count][2]=d1;
params[count][3]=d1;
params[count][3]=10;
params[count][4]=220;
params[count][5]=sum;
params[count][6]=10;
count++;
// conn.close();
}
Connection conn=null;
conn=JdbcUtils.getConnection();
TxQueryRunner tr=new TxQueryRunner();
String sql="insert into Tb_Handle_User_DayUseElectricity (UserId,CollectionPoint,UseTime,Current,Voltage,ActivePower,ReactivePower)values(?,?,?,?,?,?,?)";
int[] r1=tr.batch( conn,sql, params);
System.out.println(count);