偷懒工具设计之sql2Excel

本文介绍了一种在Linux环境下利用Java开发的简单工具,该工具能够通过JDBC连接MySQL数据库,并将查询结果导出到Excel文件中。文章提供了具体的实现步骤及代码示例。
今天在公司陪山东客户调试,远程登录,我在linux下什么工具都没有,用ssh登录服务器,直接用mysql查询数据库,提出记录中的所有汉字全是乱码。哎,可恶的公司,不让我用windows,要不我就可以用putty或者EMS了,我ft!
甚是不爽之下,我决定自己写个工具了,把客户数据库中的数据全部提取并保存到Excel中,这样我不就可以一目了然了嘛,嘿嘿,好吧,那我就写一个工具吧。

[b]第一部分就是谁都会的jdbc操作,连接数据库,提取数据集合。[/b]
[code] Connection con;
Statement state;
/** *//**初始化连接
* @param serverIp
* @param dataBase
* @param userName
* @param password
* @throws ClassNotFoundException
* @throws SQLException
*/
public void init(String serverIp,String dataBase,String userName,String password) throws ClassNotFoundException, SQLException...{
Class.forName("com.mysql.jdbc.Driver");
//配置数据源
String url="jdbc:mysql://"+serverIp+"/"+dataBase+"?useUnicode=true&characterEncoding=GB2312";
con=DriverManager.getConnection(url,userName,password);
}
/** *//**得到查询结果集
* @param sql
* @return
* @throws SQLException
*/
public ResultSet getResultSet(String sql) throws SQLException...{
state = con.createStatement();
ResultSet res = state.executeQuery(sql);
return res;
}
/** *//**关闭连接
* @throws SQLException
*/
public void close() throws SQLException...{
if(con!=null)
con.close();
if(state!=null)
state.close();
}[/code]

[b]第二部分就是把ResultSet中的记录写入一个Excel文件[/b]
操作Excel,我用的是jxl,不熟的同学可以参考:
[url]http://www.iteye.com/topic/55844?page=1[/url]

[code] /** *//**将查询结果写入Excel文件中
* @param rs
* @param file
* @throws SQLException
*/
public void writeExcel(ResultSet rs,File file) throws SQLException...{
WritableWorkbook wwb = null;
try...{
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(file);
} catch (IOException e)...{
e.printStackTrace();
}
if(wwb!=null)...{
WritableSheet ws = wwb.createSheet("sheet1", 0);
int i=0;
while(rs.next())...{
Label label1 = new Label(0, i, rs.getString("id"));
Label label2 = new Label(1, i, rs.getString("category"));
try ...{
ws.addCell(label1);
ws.addCell(label2);
} catch (RowsExceededException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
}
i++;
}

try ...{
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
} catch (IOException e) ...{
e.printStackTrace();
} catch (WriteException e)...{
e.printStackTrace();
}
}
}[/code]

[b]测试程序:[/b]
[code] Sql2Excel se = new Sql2Excel();
try ...{
se.init("127.0.0.1","mydabase", "root", "1234");
ResultSet rs = se.getResultSet("select id,category from xx ");
se.writeExcel(rs, new File("/root/sql2excel.xls"));
se.close();
} catch (ClassNotFoundException e) ...{
e.printStackTrace();
} catch (SQLException e) ...{
e.printStackTrace();
}[/code]


呵呵,比较简单吧,不过还是很有用的,其实那些数据库查询工具EMS,Mysql Query Browser之类的和这个差不多,掌握了原理,我们也可以自己开发查询工具,备份工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值