每天晚上12点定时从数据库查询最近一个月数据写入到xml文件中,以后查询时直接在xml中查询显示数据!
快来高手救急了!!!!!!

解决方案 »

  1.   

    用jdom可以实现哦!package com.comm;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.List;import org.apache.commons.dbutils.DbUtils;
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    public class BaseDao {

    private Connection conn;
    private Statement stam;
    private ResultSet rs;
    private static BaseDao basedao=null;
    private BaseDao(){}

    public static BaseDao getBaseDao(){

    if(basedao==null){
    basedao=new BaseDao();
    }
    return basedao;
    }

    public Connection getConnection() throws Exception{

    DbUtils.loadDriver("com.mysql.jdbc.Driver");
    conn=DriverManager.getConnection("jdbc:mysql://localhost/student","root","admin");
    return conn;
    }

    public void getClose()throws Exception{

    if(rs!=null){
    rs.close();
    rs=null;
    }
    if(stam!=null){
    stam.close();
    stam=null;
    }
    if(conn!=null){
    conn.close();
    conn=null;
    }
    }

    public ResultSet queryObject(String sql) throws Exception{

    conn=this.getConnection();
    Statement stam=conn.createStatement();
    rs=stam.executeQuery(sql);
    return rs;
    }

    public List query(String sql,Class c) throws Exception{

    conn=this.getConnection();
    QueryRunner qr=new QueryRunner();
    List list=(List)qr.query(conn,sql,new BeanListHandler(c));
    DbUtils.close(conn);
    return list;
    }

    public boolean updateObject(String sql) throws Exception{

    conn=this.getConnection();
    stam=conn.createStatement();
    int rows=stam.executeUpdate(sql);
    this.getClose();
    return rows>0?true:false;
    }}
    package com.utils;import java.io.FileOutputStream;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.output.XMLOutputter;import com.comm.BaseDao;public class CreateXml {

    //一个生成相应的xml文档方法
    public void createXml(String sql,String rootname,String targetname,String path) throws Exception{

    ResultSet rs=BaseDao.getBaseDao().queryObject(sql);
    Document document=new Document(new Element(rootname));
    ResultSetMetaData rsmd=rs.getMetaData();
    int rowNumber=rsmd.getColumnCount();
    while(rs.next()){
    Element element0=new Element(targetname);
    document.getRootElement().addContent(element0);
    for(int i=1;i<=rowNumber;i++){
    String data=new String(rs.getString(i).getBytes("ISO-8859-1"),"gbk");
    Element element=new Element(rsmd.getColumnName(i)).setText(data);
    element0.addContent(element);
    }
    }
    BaseDao.getBaseDao().getClose();
    XMLOutputter xmlout=new XMLOutputter();
    xmlout.output(document,new FileOutputStream(path));

    }}//哈哈!我也是新学到的,我一个朋友写的!
      

  2.   

    定时?你用TimeTask 或者Quartor好了至于读取数据库,不用别人教你了吧!写入和读取xml,这个你参考这个看看java中(DOM,SAX,JDOM,DOM4J)操作xml方式的比较和代码示例
      

  3.   

    TimeTask,写入xml,除了上面说的,也可以用JAXB!
      

  4.   

    在读取xml文件的时候可以按条件来读取吗?就想sql语句那样带条件读取
      

  5.   

    定时器就不说了写xml后,在xml中用xpath搜索一下一下就可以了,很简单解析xml的框架有很多,随便一个就好了,别太挑剔了
      

  6.   


    可以,你看一下关于xpath的相关资料吧