当前位置: 代码迷 >> SQL >> 躲懒工具设计之sql2Excel
  详细解决方案

躲懒工具设计之sql2Excel

热度:92   发布时间:2016-05-05 13:08:58.0
偷懒工具设计之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,不熟的同学可以参考:
http://www.iteye.com/topic/55844?page=1

    /** *//**将查询结果写入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之类的和这个差不多,掌握了原理,我们也可以自己开发查询工具,备份工具。
  相关解决方案