有一个类.是读取xml并写入数据库
xml大概每格十五分钟左右会更新一次问题一
怎么样自动执行这个类?让他读xml并写到数据库问题二
怎么样把重复的信息不写入数据库.每十五分钟更新一次.如果每次都读出来重写的话.会有很多很多数据的.有什么好的办法吗谢谢

解决方案 »

  1.   

    1:使用线程2:save之前先比较是否存在同样的数据
      

  2.   

    如果是重复数据的话,应该写不入数据库的啊!不过也可以自己检测重复数据。
    public void run()
    {
       while(true)
       {
           读取xml数据,//判断是否重复
           插入数据库
       }
       Thread.Sleep(15*60*1000);
    }
    利用这个线程就可以每隔15分钟就读取一次数据,并写入数据库
      

  3.   

    Thread.Sleep(15*60*1000);只要加这句就可以15分钟自动运行一次run这个方法了??有没有办法判断文件有无更新.如果有更新则读出来写入数据库.无更新则不动?
      

  4.   

    不要用楼上说的Thread.sleep,这可能会造成你的程序无法关闭(只能中断掉)class MyTask extends TimerTask{
      public void run(){
        //扫描文件的最后修改时间(java.io.File,方法lastModify)
       //更新数据库
      }
    }Timer t=new Timer();
    t.schedule(new MyTask(),0,15*60*1000);
      

  5.   

    Timer,
    ScheduledThreadPoolExecutor
    都可以定时把。
    至于文件是否更新,我觉得可以比较文件最新修改时间。
    如果文件修改了,再判断数据是否修改过
    扫描1次文件开销不大。比读出写入数据要快很多。
      

  6.   

    import java.io.FileInputStream;
    import java.util.List;
    import java.util.Timer;
    import java.util.TimerTask;import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.input.SAXBuilder;public class XmlInfo extends TimerTask { public void LoadXML(String path) {
    System.out.println(path); } @Override
    public void run() {
    // TODO Auto-generated method stub
    try {
    String path = "c:/MusicConfig.xml";
    XmlInfo xml = new XmlInfo();
    xml.LoadXML(path);
    } catch (Exception e) {
    e.printStackTrace();
    } } public static void main(String[] args) {
    Timer t = new Timer();
    t.schedule(new XmlInfo(), 0, 1 * 60 * 1000);

    }
    }
    ----------------------------------------------这样运行tomcat后不会自动运行这个类的