package com.wx.test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Scanner;
import org.junit.Test;
import com.linuxense.javadbf.DBFException;
import com.linuxense.javadbf.DBFField;
import com.linuxense.javadbf.DBFWriter;
import com.wx.bean.KaoDianVo;
import com.wx.bean.KaoShengVo;
import com.wx.util.DBHelper;
import com.wx.util.FileToZip;
public class SecondMainTest {
String yearLast = new SimpleDateFormat("yy", Locale.CHINESE)
.format(Calendar.getInstance().getTime());
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String dateNowStr = sdf.format(d);
@Test
public void setest() {
getsfFileFromDB(); // 省份
}
/*
* 省份信息表
*/
public void getsfFileFromDB() {
System.out
.println("******************信息打包中······*********************");
getByNameAndCode("2300", "黑龙江省");
getByNameAndCode("3200", "江苏省");
getByNameAndCode("4500", "广西壮族自治区");
getByNameAndCode("5000", "重庆市");
getByNameAndCode("6400", "宁夏回族自治区");
getkqFileFromDB();
}
// 根据代码和名称将数据写入省份DBF文件中
void getByNameAndCode(String proveCode, String proveName) {
OutputStream fos = null;
FileToZip ftz = new FileToZip();
try {
// 定义DBF文件字段
DBFField[] fields = new DBFField[2];
// 分别定义各个字段信息,setFieldName和setName作用相同,
// 只是setFieldName已经不建议使用
fields[0] = new DBFField();
fields[0].setName("CODE");
fields[0].setDataType(DBFField.FIELD_TYPE_C);
fields[0].setFieldLength(4);
fields[1] = new DBFField();
fields[1].setName("NAME");
fields[1].setDataType(DBFField.FIELD_TYPE_C);
fields[1].setFieldLength(64);
// 定义DBFWriter实例用来写DBF文件
DBFWriter writer = new DBFWriter();
writer.setCharactersetName("GBK"); // 设置编码格式
// 把字段信息写入DBFWriter实例,即定义表结构
writer.setFields(fields);
// 一条条的写入记录
Object[] rowData = new Object[2];
rowData[0] = proveCode;
rowData[1] = proveName;
writer.addRecord(rowData);
rowData[0] = proveCode;
rowData[1] = proveName;
writer.addRecord(rowData);
File proveFile = new File("sf_" + yearLast + "_"
+ proveCode.substring(0, 2) + "_01.dbf");
fos = new FileOutputStream(proveFile);
// 写入数据
writer.write(fos);
fos.flush();
String[] split = proveFile.getName().split("_");
ftz.toZip(proveFile,
"E:\\ksbc_" + yearLast + "_" + split[2].substring(0, 2)
+ "00_" + dateNowStr + ".zip");
System.out.println(proveName + "——" + split[2]
+ "打包成功!\n文件保存地址为:E:\\ksbc_" + yearLast + "_"
+ split[2].substring(0, 2) + "00_" + dateNowStr + ".zip");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
// getkqFileFromDB();
} catch (Exception e) {
}
}
}
/*
* 考区信息表
*/
public void getkqFileFromDB() {
getCityByNameAndCode("2306", "2300", "大庆市");
getCityByNameAndCode("3205", "3200", "苏州市");
getCityByNameAndCode("4505", "4500", "北海市");
getCityByNameAndCode("5009", "5000", "北碚区");
getCityByNameAndCode("6402", "6400", "石嘴山市");
System.out.println("请输入所在省份编码:");
Scanner sc = new Scanner(System.in);
String code = sc.next();
if (code.length() > 2) {
code = code.substring(0, 2);
}
List<KaoDianVo> list = getkdFileFromDB(code);
toKaoDianDBF(list, code);
if (sc != null) {
sc.close();
}
}
// 根据代码和名称将数据写入考区DBF文件中
void getCityByNameAndCode(String code, String proCode, String name) {
OutputStream fos = null;
FileToZip ftz = new FileToZip();
try {
// 定义DBF文件字段
DBFField[] fields = new DBFField[2];
// 分别定义各个字段信息,setFieldName和setName作用相同,
// 只是setFieldName已经不建议使用
fields[0] = new DBFField();
fields[0].setName("KQDM");
fields[0].setDataType(DBFField.FIELD_TYPE_C);
fields[0].setFieldLength(4);
fields[1] = new DBFField();
fields[1].setName("KQMC");
fields[1].setDataType(DBFField.FIELD_TYPE_C);
fields[1].setFieldLength(64);
// 定义DBFWriter实例用来写DBF文件
DBFWriter writer = new DBFWriter();
writer.setCharactersetName("GBK"); // 设置编码格式
// 把字段信息写入DBFWriter实例,即定义表结构
writer.setFields(fields);
// 一条条的写入记录
Object[] rowData = new Object[2];
rowData[0] = code;
rowData[1] = name;
writer.addRecord(rowData);
File proveFile = new File("kq_" + yearLast + "_"
+ proCode.substring(0, 2) + "_01.dbf");
fos = new FileOutputStream(proveFile);
// 写入数据
writer.write(fos);
String[] split = proveFile.getName().split("_");
ftz.toZip(proveFile,
"E:\\ksbc_" + yearLast + "_" + split[2].substring(0, 2)
+ "00_" + dateNowStr + ".zip");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (Exception e) {
}
}
}
/*
* 考点信息表
*/
public List<KaoDianVo> getkdFileFromDB(String code) {
String kdsql = "SELECT P.ID AS 考点ID,R.ID AS 考场ID,P.EXAM_PLACE_NAME AS 考点名称,0 AS 考点序号,"
+ "P.EXAM_PLACE_ADDRESS AS 考点地址,0 AS 考场序号 ,R.EXAM_ROOM_NAME AS 考场名称,A.EXAMAREA_CITY_ID AS "
+ "考区ID,COUNT(*) AS 考场人数 FROM EXAM_AREA A,EXAM_PLACE P,EXAM_ROOM_CBT R WHERE A.ID = P.EXAM_AREA_ID "
+ "AND P.ID = R.EXAM_PLACE_ID AND A.EXAMAREA_CITY_ID LIKE ? GROUP BY P.ID,R.ID,P.EXAM_PLACE_NAME,"
+ "0,P.EXAM_PLACE_ADDRESS,0 ,R.EXAM_ROOM_NAME,A.EXAMAREA_CITY_ID ORDER BY P.ID,R.ID";
DBHelper db = new DBHelper();
Connection conn = db.getConn();
ResultSet rs = null;
PreparedStatement ptp = null;
List<KaoDianVo> list = new ArrayList<KaoDianVo>();
try {
ptp = conn.prepareStatement(kdsql);
ptp.setString(1, "%" + code + "%"); // 传入查询参数
rs = ptp.executeQuery();
while (rs.next()) {
KaoDianVo e = new KaoDianVo();
e.setKddm(rs.getString(1));
e.setKdmc(rs.getString(2));
e.setKdxh(rs.getString(3));
e.setKddz(rs.getString(4));
e.setKcxh(rs.getString(5));
e.setKcmc(rs.getString(6));
e.setKcrs(rs.getString(7));
e.setKqcode(rs.getString(8));
list.add(e);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭数据库资源
db.closeAll(rs, ptp, conn);
}
return list;
}
// 生成考点文件
void toKaoDianDBF(List<KaoDianVo> list, String code) {
// 定义DBF文件字段
DBFField[] fields = new DBFField[8];
// 分别定义各个字段信息,setFieldName和setName作用相同,
// 只是setFieldName已经不建议使用
fields[0] = new DBFField();
fields[0].setName("KDDM");
fields[0].setDataType(DBFField.FIELD_TYPE_C);
fields[0].setFieldLength(30);
fields[1] = new DBFField();
fields[1].setName("KDMC");
fields[1].setDataType(DBFField.FIELD_TYPE_C);
fields[1].setFieldLength(30);
fields[2] = new DBFField();
fields[2].setName("KDXH");
fields[2].setDataType(DBFField.FIELD_TYPE_C);
fields[2].setFieldLength(90);
fields[3] = new DBFField();
fields[3].setName("KDDZ");
fields[3].setDataType(DBFField.FIELD_TYPE_C);
fields[3].setFieldLength(90);
fields[4] = new
将dbf文件打包到zip
需积分: 1 184 浏览量
2017-06-23
15:29:18
上传
评论
收藏 3.04MB RAR 举报
你看咩啊
- 粉丝: 0
- 资源: 4
最新资源
- 基于Qt+opencv+C++实现图像旋转+自动&&手动+直线检测,角度计算+界面操作+源码(期末大作业&课程设计&项目开发)
- 基于servlet的简单游戏管理系统
- matlab基于混沌系统的图像加密.zip
- Fortran语言教程,详细地介绍了Fortran语言
- (函数)图论中最短路径计算D算法MATLAB源代码,修改网络上D算法的错误,并编写通用的MATLAB函数.rar
- 基于matlab 2Dijkstra最短路径算法的matlab程序,希望对大家有所帮助.zip
- python入门学习,基础语法,用法等.zip
- Swift代码转换指南(Swift Swift Code Convension Guide .)
- Python入门到精通.zip
- 基于QT+C++开发的炫酷九宫格主界面+源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈