Statement 接口中有一个 execute(String sql, int autoGeneratedKeys) 方法。
autoGeneratedKeys有两两个可选值 Statement.NO_GENERATED_KEYS 和Statement.RETURN_GENERATED_KEYS 。
API这样解释:autoGeneratedKeys - 指示是否应该使用 getGeneratedKeys 方法使自动生成的键可用于获取的常量;
以下常量之一:Statement.RETURN_GENERATED_KEYS 或 Statement.NO_GENERATED_KEYS 。
我实在搞不清楚是什么意思。用一个实例说明最好,呵呵。
                 
                  

解决方案 »

  1.   

    获取自动生成的键值,int id primary key auto_increment;http://wenda.sogou.com/question/28861587.html
      

  2.   

    1楼的大哥:
    http://wenda.sogou.com/question/28861587.html
    这个我看了。
    PreparedStatement pstat = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
    如果我把它改成PreparedStatement pstat = conn.prepareStatement(sql,Statement.NO_GENERATED_KEYS);
    然后我再 ResultSet rsKey = pstat.getGeneratedKeys(); 
             rsKey.next();
             int key = rsKey.getInt(1); 
             rsKey.close();
    我依然能得到key的值,不知道为什么???
      

  3.   

    这个方法应该用在mysql数据库上,当需要获取自增的id值的时候,可以直接调用
      

  4.   

    RETURN_GENERATED_KEYS
    该常量指示生成的键可用于检索。
    NO_GENERATED_KEYS
    该常量指示生成的键不提供检索。下面是例子(from 互联网)
    要确定任何所产生的关键字的值,只要简单地在语句的 execute() 方法中指定一个可选的标记,表示您有兴趣获取产生的值。您感兴趣的程度可以是 Statement.RETURN_GENERATED_KEYS,也可以是 Statement.NO_GENERATED_KEYS。在执行这条语句后,所产生的关键字的值就会通过从 Statement 的实例方法 getGeneratedKeys() 来检索 ResultSet 而获得,ResultSet 包含了每个所产生的关键字的列,下面的示例创建一个新的作者并返回对应的自动产生的关键字。
      ……
      Statement stmt = conn.createStatement();
      // Obtain the generated key that results from the query.
      stmt.executeUpdate("INSERT INTO authors " +
      "(first_name, last_name) " +
      "VALUES (‘Ghq’, ‘Wxl’)",
      Statement.RETURN_GENERATED_KEYS);
      ResultSet rs = stmt.getGeneratedKeys();
      if ( rs.next() ) {
      // Retrieve the auto generated key(s).
      int key = rs.getInt();
      }