我正在尝试执行代码,用于生成包含今天日期和计数器已连接的sql中的记录的id。问题是,当我尝试点击生成按钮时,id会生成当前日期,但我希望计数器在第二天重新初始化为1,或者在未初始化ny帮助的日期更改时请。
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MyCalendarUtil {
private static String buffer = "";
private static int counter = 1;
public String nextID() {
final String datePrefix = new SimpleDateFormat("yyyyMMdd").format(new Date());
if (Long.parseLong(returnMaxId()) > 0) {
MyCalendarUtil.counter = Integer.parseInt(returnMaxId().substring(8, returnMaxId().length()));
}
if (buffer.equals(datePrefix)) {
MyCalendarUtil.counter++;
} else {
MyCalendarUtil.buffer = datePrefix;
MyCalendarUtil.counter = 1;
}
String suffix = "";
if (MyCalendarUtil.counter <= 1000) {
if (validateRange(0, 9, MyCalendarUtil.counter)) {
suffix += "00" + counter;
} else if (validateRange(10, 99, MyCalendarUtil.counter)) {
suffix += "0" + counter;
} else if (validateRange(99, 999, MyCalendarUtil.counter)) {
suffix += counter;
}
}
return (datePrefix + suffix);
}
public boolean validateRange(int min, int max, int field) {
return field >= min && field <= max;
}
public String returnMaxId() {
String result = "";
try {
DBUtil util = new DBUtil();
Connection connection = util.getConnection();
ResultSet rs = connection.createStatement().executeQuery("SELECT MAX(id) AS 'lastId' FROM crap ");
if (rs.next()) {
result = (rs.getString(1) != null) ? rs.getString(1) : "0";
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Error : " + e.getMessage());
}
return result;
}
}
答案 0 :(得分:1)
根据我的理解,你需要听日历的日更改属性。下面的代码可能对你有帮助......
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateChangeEx {
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
private static int counter = 1;
public static void main(String[] a){
Calendar cal = MyCal.getInstance();
System.out.println(cal.getTime());
System.out.println("before updating counter--->");
for(int i=0; i<10; i++){
System.out.println(""+(counter++)+cal.getTime());
}
cal.add(Calendar.DATE, 1);
System.out.println("After updating counter--->");
for(int i=0; i<10; i++){
System.out.println(""+(counter++)+cal.getTime());
}
System.out.println(cal.getTime());
}
private class ChangeListner implements PropertyChangeListener{
@Override
public void propertyChange(PropertyChangeEvent evt) {
counter = 0;
}
}
private class MyCal extends GregorianCalendar{
public void add(int field, int amount){
Date oldVal = this.getTime();
super.add(field, amount);
changeSupport.firePropertyChange("calender", oldVal, this.getTime());
}
}
public void addPropertyChangeListner(PropertyChangeListener listner){
changeSupport.addPropertyChangeListener(listner);
}
public void removePropertyChangeListner(PropertyChangeListener listner){
changeSupport.removePropertyChangeListener(listner);
}
}