我想在每周凌晨2点的时后让服务器自动插入一条数据到数据库请问怎么执行

解决方案 »

  1.   

    你用的什么框架 ssh 还是什么
      

  2.   

    一、下载quartz下载地址:http://www.opensymphony.com/quartz/download.action二、整合Spring与quartz1.quartz需要添加quartz-1.6.x.jar包spring需要添加spring-context-support.jar包我测试的环境有WebLogic 9.2,Tomcat 5.5。WebLogic 9.2可以直接使用,Tomcat 5.5 还需要添加javaee.jar包到Tomcat Home\common\lib目录下才能使用2.添加完包以后,编写对应的spring配置文件,需要添加的内容为<bean id="quartzJob" class="com.test.QuartzJob"></bean>
        <bean id="jobtask"
            class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject">
                <ref bean="quartzJob" />
            </property>
            <property name="targetMethod">
                <value>work</value><!--这里的work是你的操作类 这里面可以调用dao中的insert进行插入-->
            </property>
        </bean>
        <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
            <property name="jobDetail">
                <ref bean="jobtask" />
            </property>
            <property name="cronExpression">
                <value>0 0 2 * * ?</value><!--每天晚上两点执行work中的任务-->
            </property>
        </bean>
        <bean id="startQuertz"
            class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
            <property name="triggers">
                <list>
                    <ref bean="doTime" />
                </list>
            </property>
        </bean>
    配置文件的意思是指,作业调度需要执行类com.test.QuartzJob里的work方法,执行的时间使用的是Cron表达式,0 0 2 * * ? 是指在每天晚上2点钟执行该作业。下面编写对应的QuartzJob类:
    public class QuartzJob {
        public void work()
        {
    // 这里编写需要执行的代码
        }
    }
      

  3.   

    Quartz 或者timer都可以实现。
      

  4.   

    时间设置说明:
    一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。
    按顺序依次为 
    1.秒(0~59) 
    2.分钟(0~59) 
    3.小时(0~23) 
    4.天(月)(0~31,但是你需要考虑你月的天数) 
    5.月(0~11) 
    6.天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 
    7.年份(1970-2099)其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。
    由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?. 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
    0 0/30 9-17 * * ??? 朝九晚五工作时间内每半小时
    0 0 2 ? * SUN 表示每个星期日晚上2点 有些子表达式能包含一些范围或列表 
    例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT” “*”字符代表所有可能的值 
    因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天 “/”字符用来指定数值的增量 
    例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 ;
    在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样 “?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值 
    当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?” 
    “L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写 但是它在两个子表达式里的含义是不同的。 在天(月)子表达式中,“L”表示一个月的最后一天 ,
    在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT 如果在“L”前有具体的内容,它就具有其他的含义了 例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最后一个星期五 注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
      

  5.   

    不用这么麻烦的,java自带的都有一个Timer类,你直接在API中查找它的方法,初始化一个Timer类,然后有一个
    scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定速率执行。
    调用就可以了
      

  6.   

    这个不求不需要用  Quartz  ,Quartz是用来处理复杂度很高的 定时需求的,
    这个直接用jdk 的 Timer处理就行了
      

  7.   

    上面的有些复杂了,有些杀鸡用牛刀的嫌疑。系统级别的计划任务 + j2se数据插入 也是可以的。
      

  8.   

    毕竟一周一次,不推荐各类虚拟机级别的Timer,耗资源。