因为楼主设置表自动+1的字段类型是序列,所以它在插入新数据的时候不会理会之前的数据是否被删,建议改变该字段的类型,然后由程序控制插入数据时候该字段 select max(id) from tablename; 插入前查询这一句,获取最大的id,然后+1,赋给要插入数据的id值
搞定了: 如果记录为:123456 无论删除哪一条再插入,都会自动更新,如删除3,插入后仍为 123456,删除6再插入一条,也为123456 追加一条新记录则:1234567代码贴出来 供大家参考下: public static List getNextIdInfo(int iId){ List list = new ArrayList(); LoginForm loginForm = new LoginForm(); String sql = "select id from tb_user where id=" + iId; try{ Class.forName(sourse.sDriverName); CON = DriverManager.getConnection(sourse.sUrl, sourse.sUserName,sourse.sPassWord); STMT = CON.createStatement(); RS = STMT.executeQuery(sql); if(RS.next()){ loginForm.setId(RS.getInt("id")); list.add(loginForm); } RS.close(); CON.close(); STMT.close(); }catch(Exception e){ e.printStackTrace(); } return list; }
public static int getNextId(){ int iNowId = 1; int iNextId = 1; List list = getNextIdInfo(iNowId); while(!list.isEmpty()){ iNowId = iNextId; iNextId ++; list = getNextIdInfo(iNextId); } return iNextId; }
楼主这种想法使用自增方式的话没有意义。你现在是12346觉得需要12345,那如果是12456,你怎么办,那个3可是无法自动加出来的。所以说不管用自增字段还收手动控制,都会出现类似问题。
所以即便你把ID为5的记录删除了,再次添加记录时,新的ID是5+1,而不是4+1
select max(id) from tablename;
插入前查询这一句,获取最大的id,然后+1,赋给要插入数据的id值
如果记录为:123456 无论删除哪一条再插入,都会自动更新,如删除3,插入后仍为 123456,删除6再插入一条,也为123456 追加一条新记录则:1234567代码贴出来 供大家参考下:
public static List getNextIdInfo(int iId){
List list = new ArrayList();
LoginForm loginForm = new LoginForm();
String sql = "select id from tb_user where id=" + iId;
try{
Class.forName(sourse.sDriverName);
CON = DriverManager.getConnection(sourse.sUrl, sourse.sUserName,sourse.sPassWord);
STMT = CON.createStatement();
RS = STMT.executeQuery(sql);
if(RS.next()){
loginForm.setId(RS.getInt("id"));
list.add(loginForm);
}
RS.close();
CON.close();
STMT.close();
}catch(Exception e){
e.printStackTrace();
}
return list;
}
public static int getNextId(){
int iNowId = 1;
int iNextId = 1;
List list = getNextIdInfo(iNowId);
while(!list.isEmpty()){
iNowId = iNextId;
iNextId ++;
list = getNextIdInfo(iNextId);
}
return iNextId;
}