"在这个过程之前正好对象也插了一条记录" 不冲突不重复阿?
public String getNewSn() {
        String sql = "select max(project_sn) from project_info";
        return String.valueOf(executeQueryInt(sql)+1);
    }public boolean addProject() {
        project_sn = getNewSn();
        ....
        ...

解决方案 »

  1.   

    如果,在一个对象实例调用AddNewObject 和 GetNewsSn 之间,
    存在别的实例或过程,
    如:本对象的不同实例,也调用了AddNewObject 这时候就有问题了。
    AddNewObject负责新建对象和插入一条记录。感谢回复。
      

  2.   

    把你新存的对象存起来,下次用的时候去出来,就可以了。不同的对象在调用AddNewObject时候把你可以新建一个对象,这个对象和你的原来的对象基本相同,你在加上一个用来标识调用这个对象的属性,每次在你插入的时候就建立一个 这样的对象,并把他们放在集合里,在插入前你要先检查是否有同一个有相同的类生成的对象如过有,覆盖掉这个类,没有就新建,想拿出来的话,就可以上哪个集合里去取。
      

  3.   

    sql server 2000 标准做法:declare @intEqId int
    insert into test(bb,cc)values('dssf','sert')
    select @intEqid=@@identity
      

  4.   

    我是这么做的,
    先算一个统计编号,如TXC0000001 然后把他做为数据ID写入数据库中然后在在把000000001+1写入一个计录表中。下次在调这个计录表的数据,就行了,,,代码  public String getCount(){
        try {
           this.rs=executeQuery("select * from OA0011 where Type='公文起草'");
           while (rs.next()){
            count =(rs.getInt("COUNT"))+1 ;
          }
        }  catch(Exception e) {
           e.printStackTrace();
         }
        return Integer.toString(count);
      }
      

  5.   

    可以这样解决,建立一个表来存储这个主键序列,建一个类从这个表中取得主键,
    这个类在处理过程中,先update,使主键值加1,再select max(),这样处理就不会有重了,主键管理类中不要使用事务,凡是使用该 方法,主键就加1