最近项目中有遇到报表数据入库的情况,数据量说大不大,说小又赖得自己手动敲!于是自己动手写了一个入库的,下面直接上代码,如有同样的,请联系我删除此文
来源:互联网 发布:百度安卓软件 编辑:程序博客网 时间:2024/06/07 18:20
数据库连接:
package javacore1;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import com.foxx.app.NewDataToDB;
import com.foxx.model.FoxxCode;
public class DB {
//批量插入的速度要比普通处理的速度快
public static int[] Insert(Connection conn,List<FoxxCode> list) {
int[] a=null;
try {
String sql = "insert into index_and_stk (index_code,index_name,constituent_code,constituent_name,weight)values(?,?,?,?,?)";
// 插入数据的sql语句
PreparedStatement pstmt=conn.prepareStatement(sql);
long startTime=System.currentTimeMillis();
for(FoxxCode foxx :NewDataToDB.list){
pstmt.setString(1, foxx.getIndex_code());
pstmt.setString(2, foxx.getIndex_name());
pstmt.setString(3, foxx.getConstituent_code());
pstmt.setString(4, foxx.getConstituent_name());
pstmt.setDouble(5, foxx.getWeight());
pstmt.addBatch();//添加到批量处理
}
int[] result=pstmt.executeBatch();
a=result;
System.out.println("总共耗时:"+(System.currentTimeMillis() - startTime));
pstmt.close(); //关闭数据库连接
} catch (SQLException e) {
e.printStackTrace();
}
return a;
}
//创建数据库连接
public static Connection getConnection(String user, String pass) {
Connection conn = null;//声明连接对象
String driver = "com.mysql.jdbc.Driver";// 驱动程序类名
String url = "jdbc:mysql://localhost:3306/test?" // 数据库URL
+ "useUnicode=true&characterEncoding=UTF8";// 防止乱码
try {
Class.forName(driver);// 注册(加载)驱动程序
conn = DriverManager.getConnection(url, user, pass);// 获取数据库连接
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
//回收数据库连接
public static void closeConnection(Connection conn) {
try {
if (conn != null)
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
NewDataToDB mNewDataToDB = new NewDataToDB();
mNewDataToDB.main(args);
// 账号密码
Connection conn = getConnection("root", "");
//方法名调用数据库连接,把须保存的数据拿过来
Insert(conn,NewDataToDB.list);
// 保存完之后关闭数据库连接
closeConnection(conn);
}
}
读取excel文档数据:
package com.foxx.app;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.foxx.model.FoxxCode;
import javacore1.DB;
/**
* 用apache poi 包提供的接口来读取excel文档
* @author jiangwanchang
* @deprecated 读取本地文件并存库
* @Date:2017年11月21日 11:30
*
*/
public class NewDataToDB {
public static List<FoxxCode> list = new ArrayList<FoxxCode>();
public static void main(String args[]) {
DB mDBHelper = new DB();
FoxxCode mFoxxcode =null;
try {
String fileName = "f:/tt.xls"; //定义本地的读取文件位置
int count =0; //我这里用来去除标题各种
HSSFWorkbook workXsl = new HSSFWorkbook(new FileInputStream(fileName)); // 得到这个excel表格对象,并以workXsl来保存
// wb.getSheetAt(0);
// 循环遍历表sheet.getLastRowNum()是获取一个表最后一条记录的记录号,
HSSFSheet sheet = workXsl.getSheetAt(0);
//存放list
for (int j = 0; j < sheet.getLastRowNum() + 1; j++) {
mFoxxcode= new FoxxCode();
count++;
if(count>1){
// 创建一个行对象
HSSFRow row = sheet.getRow(j);
HSSFCell cell0 = row.getCell((short) 0);
HSSFCell cell1 = row.getCell((short) 1);
HSSFCell cell2 = row.getCell((short) 2);
HSSFCell cell3 = row.getCell((short) 3);
HSSFCell cell4 = row.getCell((short) 4);
System.out.println(cell0+"\t"+cell1+"\t"+cell2+"\t"+cell3+"\t"+cell4);
mFoxxcode.setIndex_code(cell0.getStringCellValue());
mFoxxcode.setIndex_name(cell1.getStringCellValue());
mFoxxcode.setConstituent_code(cell2.getStringCellValue());
mFoxxcode.setConstituent_name(cell3.getStringCellValue());
mFoxxcode.setWeight((double)cell4.getCellType());
list.add(mFoxxcode);
}
System.out.println("=================================================");
}
} catch (FileNotFoundException e) {
System.out.println(e.toString());
} catch (IOException ex) {
System.out.println(ex.toString());
}
}
}
、、、这里是另一个遍历
// 把一行里的每一个字段遍历出来
//for (int i = 0; i < row.getLastCellNum(); i++) {
// // 创建一个行里的一个字段的对象,也就是获取到的一个单元格中的值
// HSSFCell cell = row.getCell(i);
//
//
//
//
// // 在这里我们就可以做很多自己想做的操作了,比如往数据库中添加数据等
// System.out.println(cell.getRichStringCellValue());
//}
- 最近项目中有遇到报表数据入库的情况,数据量说大不大,说小又赖得自己手动敲!于是自己动手写了一个入库的,下面直接上代码,如有同样的,请联系我删除此文
- 网上只写了一个文件断点下载的例子! 我仿照别人得例子 自己增加了自己代码,异步下载文件 支持断点下载 多任务下载! 如有问题 请联系我
- 【且听我说“镶嵌数据集建库”】2、影像入库后的维护
- 谁说3C配件的创新已死?小配件也得有大设计!
- 关于数据入库问题(估计对你参考不大,只是简单的小问题)
- kdb+q一个入库和删除的小demo
- 高精度的算法,小白一个,尝试写的,大家有想法尽管说
- 他们说:博客里写的技术,也算是已有技术,会影响专利审核,于是。。。。
- DWG数据的入库
- Qgis 数据的入库
- 在家待产中,有兼职的请联系我邮箱
- 大数据学习路线图,都是网上找的资料,分享下。如有问题,请及时联系更正
- 最近做的一个oracle数据迁移功能,如有更好的方案,请各位大虾也能告诉小弟。
- c++中vector的用法详解 转自网络,如有侵权,请速联系,立即删除
- 微信小程序细节坑(自己刚开始做小程序中遇到的一些细节,如有错误,还请大佬指正,看心情更新。。。。)
- 又有一个多月没有来打里我的小窝了
- 我敢说,这绝对是个问题!我都觉得它是9i的bug了! 请高人指点,太有难度了。
- 元数据入库的总结
- 数据库基本知识和五大约束
- Java基础12 多态
- Java tomcat 实现二级域名session共享(良心共享)
- 接口
- 箭头函数
- 最近项目中有遇到报表数据入库的情况,数据量说大不大,说小又赖得自己手动敲!于是自己动手写了一个入库的,下面直接上代码,如有同样的,请联系我删除此文
- 关于 localStorage 的用法
- notepad++ 运行
- mysql/mariadb-双主复制
- 从form的enctype属性到Content-Type再到request.getInputStream()
- 数据库索引简单分析
- AI的下一主战场 —— 手机与物联网终端(snpe)
- 关机闹钟提示界面,没有标签
- 动态规划(Dynamic Programming)