我的建议:把插入操作写成存储过程,然后在存储过程里返回该唯一标识sys_unid。

解决方案 »

  1.   

    在oracle里存储过程怎么写?在jsp中又该怎么调用?
    还有没有别的方法啊?
      

  2.   

    晕 找本Oracle的书看看吧 调用用CallableStatement
      

  3.   

    我是这么操作的:
    insert 后,执行
    select max(id) from table获得
      

  4.   

    估计还是需要在数据库端进行操作,假设十个人进行插入动作,那么这时候选择最大的max(id)就可以出现问题,所以最好在它插入之前获得一个id
      

  5.   

    用select g_forum_id.currval from dual
      

  6.   

    看下我写的吧,对你绝对有帮助,别忘了加分啊:
    create table person(id number(12,0) not null primary key,name char(10) not null,sex char(3)  not null);
    create sequence id;CREATE OR REPLACE PROCEDURE addperson(p_name in varchar2,p_sex in varchar2,idReturn out number) IS
    temp_id number;
    BEGIN
    select id.nextval into temp_id from dual;
    insert into person(id,name,sex) values(temp_id,p_name,p_sex);
    idReturn:=temp_id;
    END addperson;import java.sql.*;
    import java.lang.*;
    import oracle.jdbc.driver.*;
    public class OracleDB2
    {
      public static void main(String[] args)
      {
        ResultSet rs=null;
        CallableStatement call=null;
        try {
               DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
               Connection conn =
    DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.115:1521:OracleDB","scott","tiger");
        call=conn.prepareCall("{ call addperson (?,?,?) }");
        call.registerOutParameter(3,java.sql.Types.INTEGER);
        call.setString(1, "小路");
        call.setString(2, "女");
        call.execute();    int id=call.getInt(3);    Statement stmt=conn.createStatement();
        String sql="select * from person where id="+id;
        rs=stmt.executeQuery(sql);
       }catch(Exception e) 
    {System.out.println("error:"+e);}
        try{
    // 获得数据结果集合
        ResultSetMetaData rmeta = rs.getMetaData();
    // 确定数据集的列数,亦字段数
    int numColumns=rmeta.getColumnCount();
    // 输出每一个数据值
    for(int i=1;i<=numColumns;i++) {
        if(i<numColumns)
          System.out.print(rmeta.getColumnName(i)+" | ");
        else
          System.out.println(rmeta.getColumnName(i));
        }
        while(rs.next()){
           for(int i=1;i<=numColumns;i++) {
               if(i<numColumns)
                  System.out.print(rs.getString(i).trim()+" | ");
               else
                  System.out.println(rs.getString(i).trim());
           }
        }}catch(Exception e){System.out.println("error:"+e);}
       }
    }