问题:
一个表是用来存储存储7个地址不同的数据
要求: 每隔1个小时,就执行插入这个7个地址的数据,共7条;
前提
这7个地址接受顺序是固定的,而且之间接受数据的间隔可以忽略不计;
keys是地址,按照0-7来的
思想
只有第一个接受的地址需要经过以下的流程,如果第一个地址可以插入数据库,后面的都可以;如果第一个不可以,后面的也不可以,因为之间的间隔很短,如果设几个变量的话,太麻烦了,也没有意义!
解决方法:
1、设置1个布尔类型的变量,初始值为false;
2、主要操作结构思想如下
2.1 //获取当前的时间
Date dd=当前时间;
2.2 //定义一个存储标志时间的Date类型的变量
Date 标志时间变量
2.3 //为每个地址定义一个boolean类型的变量,来决定是否执行存储数据库操作
Boolean 变量名=true;
2.4 //把当前时间和标志时间变量进行比较,如果差距>1个小时 boolean类型的值为true,不然为false
if(当前时间- 标志时间变量>1个小时){
boolean变量名称=true;
}else if(当前时间- 标志时间变量<1个小时){
boolean变量名称=flase;
}
以上实现的代码如下:
第一个方法public static boolean story()是用来判断第一个地址离上一次执行插入数据库操作的时间是否大于1h;
第二个方法是比较两个时间的差距
package cn.com.nio;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BooleanStory {
public static boolean story() {
//为7个地址设置7个boolean类型的变量,初始值为true;
boolean b0=false;
//定义一个变量 是来存储当前时间的,7条数据插入的时间都差不多,就用一个变量把
String time_id=null;
//获取当前的时间
Date dd=new Date();
SimpleDateFormat simtime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String current_time=simtime.format(dd);
//比较两个时间的差距
if(prepareTime(current_time,time_id)){
time_id=current_time;
b0=true;
}
return b0;
}
//两个时间的差距
public static boolean prepareTime(String currentTime,String indenTime){
boolean prep=false;
SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long current;
try {
current = sim.parse(currentTime).getTime();
long inden=sim.parse(indenTime).getTime();
int h=(int) ((current-inden)/3600000);
if(h>1){
prep=true;
}else{
prep=false;
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return prep;
}
}
在把接受的数据往数据库里面插入的最后一步的时候,对地址0进行判断,如果地址0可以插入数据库,那么其他的都可以,如果地址0不可以插入数据库,那么都不可以插入数据库!