偷懒工具设计之sql2Excel
甚是不爽之下,我决定自己写个工具了,把客户数据库中的数据全部提取并保存到Excel中,这样我不就可以一目了然了嘛,嘿嘿,好吧,那我就写一个工具吧。
第一部分就是谁都会的jdbc操作,连接数据库,提取数据集合。
Connectioncon;
Statementstate;

/***/
/**初始化连接
*@paramserverIp
*@paramdataBase
*@paramuserName
*@parampassword
*@throwsClassNotFoundException
*@throwsSQLException
*/

public
void
init(StringserverIp,StringdataBase,StringuserName,Stringpassword)
throws
ClassNotFoundException,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
*/

public
ResultSetgetResultSet(Stringsql)
throws
SQLException
...
{
state=con.createStatement();
ResultSetres=state.executeQuery(sql);
returnres;
}

/***/
/**关闭连接
*@throwsSQLException
*/

public
void
close()
throws
SQLException
...
{
if(con!=null)
con.close();
if(state!=null)
state.close();
}
第二部分就是把ResultSet中的记录写入一个Excel文件
操作Excel,我用的是jxl,不熟的同学可以参考: 利用java操作Excel文件
/***/
/**将查询结果写入Excel文件中
*@paramrs
*@paramfile
*@throwsSQLException
*/

public
void
writeExcel(ResultSetrs,Filefile)
throws
SQLException
...
{
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
=
new
Sql2Excel();

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();
}









































第二部分就是把ResultSet中的记录写入一个Excel文件
操作Excel,我用的是jxl,不熟的同学可以参考: 利用java操作Excel文件






















































测试程序:














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