改成这样不行吗:
PreparedStatement prestmt=conn.prepareStatement("insert into bbs(a,b) values(seq2.nextval(),?)");
prestmt.setBytes(2,cardid.getBytes());
你可以在表上建一个触发器,这样就不用给这个字段(a)赋值了

解决方案 »

  1.   

    create or replace trigger tri_ryjbxx
    after update of scbz,csbz or delete on ryjbxx
    for each row
    begin 
         if deleting then
               delete from ryxxzb
                  where rybh=:old.rybh;
               delete from ryxxzb1
                 where rybh=:old.rybh;
               delete from ryxxzb2
                 where rybh=:old.rybh;
         end if;
         if updating then
            update ryxxzb
               set scbz=:new.scbz,csbz=:new.csbz
              where rybh=:new.rybh;
            update ryxxzb1
               set scbz=:new.scbz,csbz=:new.csbz
              where rybh=:new.rybh;
            update ryxxzb2
               set scbz=:new.scbz,csbz=:new.csbz
              where rybh=:new.rybh; 
         end if;
    end;
    /
      

  2.   

    用触发器自动后台完成吧,这样又省力又省时,另外触发器中可以直接对:new符值,所以出现自动加一的列就可以用序列和触发器实现了.