偷懒工具设计之sql2Excel
今天在公司陪山东客户调试,远程登录,我在linux下什么工具都没有,用ssh登录服务器,直接用mysql查询数据库,提出记录中的所有汉字全是乱码。哎,可恶的公司,不让我用windows,要不我就可以用putty或者EMS了,我ft!
甚是不爽之下,我决定自己写个工具了,把客户数据库中的数据全部提取并保存到Excel中,这样我不就可以一目了然了嘛,嘿嘿,好吧,那我就写一个工具吧。
第一部分就是谁都会的jdbc操作,连接数据库,提取数据集合。
Connectioncon;
Statementstate;
/***//**初始化连接
*@paramserverIp
*@paramdataBase
*@paramuserName
*@parampassword
*@throwsClassNotFoundException
*@throwsSQLException
*/
publicvoidinit(StringserverIp,StringdataBase,StringuserName,Stringpassword)throwsClassNotFoundException,SQLException...{
Class.forName("com.mysql.jdbc.Driver");
//配置数据源
Stringurl="jdbc:mysql://"+serverIp+"/"+dataBase+"?useUnicode=true&characterEncoding=GB2312";
con=DriverManager.getConnection(url,userName,password);
}
/***//**得到查询结果集
*@paramsql
*@return
*@throwsSQLException
*/
publicResultSetgetResultSet(Stringsql)throwsSQLException...{
state=con.createStatement();
ResultSetres=state.executeQuery(sql);
returnres;
}
/***//**关闭连接
*@throwsSQLException
*/
publicvoidclose()throwsSQLException...{
if(con!=null)
con.close();
if(state!=null)
state.close();
}
第二部分就是把ResultSet中的记录写入一个Excel文件操作Excel,我用的是jxl,不熟的同学可以参考:
利用java操作Excel文件
/***//**将查询结果写入Excel文件中
*@paramrs
*@paramfile
*@throwsSQLException
*/
publicvoidwriteExcel(ResultSetrs,Filefile)throwsSQLException...{
WritableWorkbookwwb=null;
try...{
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb=Workbook.createWorkbook(file);
}catch(IOExceptione)...{
e.printStackTrace();
}
if(wwb!=null)...{
WritableSheetws=wwb.createSheet("sheet1",0);
inti=0;
while(rs.next())...{
Labellabel1=newLabel(0,i,rs.getString("id"));
Labellabel2=newLabel(1,i,rs.getString("category"));
try...{
ws.addCell(label1);
ws.addCell(label2);
}catch(RowsExceededExceptione)...{
e.printStackTrace();
}catch(WriteExceptione)...{
e.printStackTrace();
}
i++;
}
try...{
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
}catch(IOExceptione)...{
e.printStackTrace();
}catch(WriteExceptione)...{
e.printStackTrace();
}
}
}
测试程序:
Sql2Excelse=newSql2Excel();
try...{
se.init("127.0.0.1","mydabase","root","1234");
ResultSetrs=se.getResultSet("selectid,categoryfromxx");
se.writeExcel(rs,newFile("/root/sql2excel.xls"));
se.close();
}catch(ClassNotFoundExceptione)...{
e.printStackTrace();
}catch(SQLExceptione)...{
e.printStackTrace();
}
呵呵,比较简单吧,不过还是很有用的,其实那些数据库查询工具EMS,Mysql Query Browser之类的和这个差不多,掌握了原理,我们也可以自己开发查询工具,备份工具。
分享到:
相关推荐
“偷懒”的技术:打造财务Excel达人 pdf
打造财务Excel达人示例文档,主要为其中的EXCEL使用技巧方面的示例
打造财务Excel达人示例文档,主要为其中的EXCEL使用技巧方面的示例
项目之余,发现很多项目都需要Excel导入导出的功能,每次重复代码的Coding以令我忍无可忍, 终于在一个"寂寞难耐"的周末,完成了一个Excel导入数据库(支持Sql Server 2000,2005; Access,Oracle未测试)的共通程序(可配置...
将电子表格的数据导出插入数据的INSERT语句,自己用C#写的。感觉挺方便的,共享给大家你应该用得着,欢迎提出意见和建议。里面附加了一个帮助,操作不难。 【爱偷懒的程序员专用】
mysql数据库与SQLserver数据库之间的转换工具,做练习题时可以根据数据数据结构一样但是,数据库不一样,偷懒工具
SQLPrompt V7.2 Sql代码提示工具, 数据库是大家在项目开发中肯定会用到的,C#项目用的最多的就是微软自家的SQL Server了。不可否认,微软的Visual Studio开发平台很好用,很直观的体现就是智能提示。敲几个字符,...
本版本是04年当时开发项目时,为了节省工作量,开发的一个辅助工具...之所以添加了单一模式的是因为一些小心活动项目,就直接用这个代码来偷懒了。 其它的没什么特别说明的了,使用中遇到问题,可以随时和我联系。。。
将电子表格的数据导出插入数据的INSERT语句,自己用C#写的。感觉挺方便的,共享给大家你应该用得着,欢迎提出意见和建议。里面附加了一个帮助,操作不难。【爱偷懒的程序员专用】
图书管理系统,ASP+SQLServer2000 自己做的,做得很简单,适合要求不高的人。 这是数据库课程设计时做的 适合课程设计偷懒的人。 如果毕业设计的话,有点太简单了,不过可以在这基础上新增。
Excel2HtmlTable的主要功能就是把Excel的内容以表格的方式,展现在页面中。 Excel的多个Sheet对应页面的多个Tab选项卡。 转换算法的难点在于,如何处理行列合并,将Excel的行列合并模型转换成Html表格的行列合并模型...
课程设计基于Java实现的校园快递代拿系统源码+sql数据库+项目详细说明.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、...
全面方便初出茅庐人员学习EXCEL电子表格制作与学习用商用环境的介绍与参考。
附赠Database.asp程序 该程序是我以前做的一个只适合ASP数据库操作的自动生成代码的偷懒工具 http://***/TableList.asp 通过该页面演示添加 修改 删除 程序免费开源 任意使用 修改请注明原作者 数据库表结构管理...
《你早该这么玩Excel》内容简介:你是个表格“菜鸟”,对着一堆函数和技巧犯 晕,觉得此生成为Excel高手无望?你是个“表”哥或“表”姐,自认阅“表”无数,而且早已审“表”疲劳?你是公司的Boss,经常拿着报表做...
不跳转页面分页工具,依赖于jQuery,默认样式依赖于bootstrap3.0,通过最大行数和显示 行数计算出分页总数,通过设置的样式结构决定前台展示出现的样式,目前存在两种展出模式,可通过定义扩展方式,增加展出样式。
窗口置顶快捷隐藏小工具(偷懒神器),把视频或网页缩小后放到桌面一角,ctrl + Q 隐藏,Ctrl + E 显示,上班看片小工具
*你是个表格“菜鸟”,对着一堆函数和技巧犯晕,觉得此生成为Excel高手无望? *你是个“表”哥或“表”姐,自认阅“表”无数,而且早已审“表”疲劳? *你是公司的Boss,经常拿着报表做决策,却没有发现表中有个...
以前在办公室偷懒时写的一个二人对战用的五子棋程序。用excel写的。用VBA实现的。
《你早该这么玩Excel》内容简介:你是个表格“菜鸟”,对着一堆函数和技巧犯晕,觉得此生成为Excel高手无望?你是个“表”哥或“表”姐,自认阅“表”无数,而且早已审“表”疲劳?你是公司的Boss,经常拿着报表做...