您的位置:首页 > 数据库

偷懒工具设计之sql2Excel

2008-04-01 17:20 387 查看

 偷懒工具设计之sql2Excel

        今天在公司陪山东客户调试,远程登录,我在linux下什么工具都没有,用ssh登录服务器,直接用mysql查询数据库,提出记录中的所有汉字全是乱码。哎,可恶的公司,不让我用windows,要不我就可以用putty或者EMS了,我ft!
         甚是不爽之下,我决定自己写个工具了,把客户数据库中的数据全部提取并保存到Excel中,这样我不就可以一目了然了嘛,嘿嘿,好吧,那我就写一个工具吧。

第一部分就是谁都会的jdbc操作,连接数据库,提取数据集合。


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


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



    /** *//**将查询结果写入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();


                }


            }


    }
测试程序:

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


        }

         呵呵,比较简单吧,不过还是很有用的,其实那些数据库查询工具EMS,Mysql Query Browser之类的和这个差不多,掌握了原理,我们也可以自己开发查询工具,备份工具。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: