Java连接DB2数据库查询数据然后导出到excel

首先要把db2jcc4.jar和db2jcc_license_cu.jar导入,再将POI的jar包导入,因为后面要操作excel。

package xxx.xxx.xxx;

import java.sql.Connection;

public interface IConn {
Connection getConn();
}

 

----------------------------

package xxx.xxx.xxx;

import java.sql.Connection;
import java.sql.DriverManager;


public class DB2Conn implements IConn{
private static final String DBDRIVER = "com.ibm.db2.jcc.DB2Driver" ;
private static final String DBURL = "jdbc:db2://x.xxx.xxx.xxx:50000/waadb" ;
private static final String DBUSER = "db2inst1" ;
private static final String DBPASS = "xxxxxxxx";
private Connection conn=null;

@Override
public Connection getConn() {
// TODO Auto-generated method stub
try {
Class.forName(DBDRIVER).newInstance();
this.conn = (Connection) DriverManager.getConnection(DBURL, DBUSER, DBPASS);
// System.out.println("Succedded");

} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("Driver");
e.printStackTrace();
}

return conn;
}
}

 

---------------------------------------------------------------------

package xxx.xxx.xxx;

import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
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;

public class TestConn {

private static final String DATE = "2017-xx-xx";

public static void main(String[] args) {
// TODO Auto-generated method stub
createReport();
}

private static void createReport() {
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
IConn iconn=new DB2Conn();
conn=iconn.getConn();
String sql="SELECT TYPE, TO_CHAR(CREATETIME,'YYYY-MM-DD HH24:MI:SS') FROM QUERY_HISTORY WHERE CREATETIME LIKE '" + DATE + "%' ORDER BY CREATETIME DESC "; //查询结果为一个两列的数据,所以存到list并转换成二维数组。
List<String> list=new ArrayList<>();
try {
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
list.add(rs.getString(1));
list.add(rs.getString(2));
// System.out.println(rs.getString(1)+"|"+rs.getString(2));
}

// System.out.println(list);
//将数据存在一维数组里面
if(list != null && list.size()>0){
String[] str=new String[list.size()];
for(int i=0;i<list.size();i++){
str [i] = list.get(i);
}
//讲一维数组转成二维数组
String[][] str2=new String[str.length/2][2];
int k=0;
for(int i=0;i<str2.length;i++){
for (int j = 0; j < str2[i].length; j++) {
str2[i][j] = str[k++];
}
}
//讲数组传入excel并生成excel文件
@SuppressWarnings("resource")
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet=wb.createSheet();

for (int i = 0; i < str2.length; i++) {
HSSFRow row = sheet.createRow(i);
for (int j = 0; j < str2[i].length; j++) {
HSSFCell cell=row.createCell(j);
cell.setCellValue(str2[i][j]);
}
}

try
{
FileOutputStream output = new FileOutputStream("D:/report_"+DATE+".xls");
wb.write(output);
output.close();
}
catch (Exception e)
{
e.printStackTrace();
}

}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


}
}

posted @ 2017-03-01 10:06  波澜丶不惊  阅读(1724)  评论(0编辑  收藏  举报