`
royzhou1985
  • 浏览: 250318 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

三种获得自动生成主键的方法

    博客分类:
  • Java
阅读更多
package test;   
 
import java.sql.Connection;   
import java.sql.DriverManager;   
import java.sql.ResultSet;   
import java.sql.Statement;   
 
/**  
* 三种获得自动生成主键的方法。  
*  
* @author 赵学庆  
*  
*/   
public class TestGetPK {   
 
  public static void main(String[] args) throws Exception {   
    Class.forName("com.mysql.jdbc.Driver");   
    String url = "jdbc:mysql://localhost/mytest";   
    Connection con = DriverManager.getConnection(url, "root", "111111");   
 
    System.out.println(getPK1(con));   
    System.out.println(getPK2(con));   
    System.out.println(getPK3(con));   
  }   
 
  /**  
   * 使用JDBC 3.0提供的 getGeneratedKeys。推荐使用  
   *  
   * @param con  
   * @return  
   * @throws Exception  
   */   
  public static long getPK1(Connection con) throws Exception {   
    Statement stmt = con.createStatement();   
    stmt.executeUpdate("INSERT INTO t_type (name) values ('Can I Get the Auto Increment Field?')",   
        Statement.RETURN_GENERATED_KEYS);   
 
    int autoIncKeyFromApi = -1;   
    ResultSet rs = stmt.getGeneratedKeys();   
    if (rs.next()) {   
      autoIncKeyFromApi = rs.getInt(1);   
    }   
    return autoIncKeyFromApi;   
  }   
 
  /**  
   * 使用数据库自己的特殊SQL.  
   *  
   * @param con  
   * @return  
   * @throws Exception  
   */   
  public static long getPK2(Connection con) throws Exception {   
    Statement stmt = con.createStatement();   
    stmt.executeUpdate("INSERT INTO t_type (name) values ('Can I Get the Auto Increment Field?')",   
        Statement.RETURN_GENERATED_KEYS);   
 
    int autoIncKeyFromFunc = -1;   
    ResultSet rs = stmt.executeQuery("SELECT LAST_INSERT_ID()");   
    if (rs.next()) {   
      autoIncKeyFromFunc = rs.getInt(1);   
    }   
    return autoIncKeyFromFunc;   
  }   
 
  /**  
   * 使用可更新的结果集。  
   *  
   * @param con  
   * @return  
   * @throws Exception  
   */   
  public static long getPK3(Connection con) throws Exception {   
    Statement stmt = con.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,   
        java.sql.ResultSet.CONCUR_UPDATABLE);   
    ResultSet rs = stmt.executeQuery("SELECT * FROM t_Type");   
    rs.moveToInsertRow();   
    rs.updateString("name", "AUTO INCREMENT here?");   
    rs.insertRow();   
    rs.last();   
    int autoIncKeyFromRS = rs.getInt("id");   
    return autoIncKeyFromRS;   
  }   
}  
分享到:
评论

相关推荐

    JPA主键生成策略

    只要1分就可获得JPA主键生成策略,很全的哦

    dotnetcoding ORM 代码生成器

    整个方案根据已经设计好的数据库自动生成,在生成的过程种可以灵活的定义生成参数. 系统实现了比较完整的O-R映射.数据库中的所有逻辑对象表,列,字段,主键,外键,Null, Default,唯一索引都在类里得到了体现,同时还...

    JAVA代码生成工具

    unique="是否唯一性约束" nullable="是否可以为空" pk="是否主键,在表没有主键的情况下,可以指定一个代理主键" updatable="是否可以更新" insertable="是否插入" enumString="枚举值,以分号分隔,示例值:M(1,...

    发布一个orm小工具

    1、产生文件存储的路径...6、只是生成代码文件,不能自动生成编译后的文件,需要用户自动生成。 注:由于时间、金钱、···等等x种因素,这些缺陷都没有得到改善!日后有机会一定整好! 优点:简单易用,层层清晰。

    .net ORM 代码生成器 v1.1

    设计模式和构件模式,将一个解决方案分解为6个Project,分别是通用类库, 通用控件库,数据访问工程,业务规则工程,项目专用控件工程,UI界面工程,整个方案根据已经设计好的数据库自动生成,在生成的过程种可以...

    CMEU代码生成器

    生成Mapper映射文件(dao层接口SQL语句,支持生成3表关联(比如:A表关联B表,B表关联C表,一次便可获得3张表的数据),支持主键策略;<如果选择创建Assist支持分页,去重,排序,无注入动态查询等>); 生成service层接口(与dao...

    Hibernate注解

    * GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型) * GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。(这个值要与generator一起使用) * generator 指定...

    风越.Net代码生成器 [FireCode Creator] V1.3 精简版

    10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名...

    风越ASP代码生成器2.8

    10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名...

    oracle-自动获得表所有DDL(有缺陷)

    通过PL/SQL 自己手动生成DDL,不过目前我只写了 表、主键、注释、索引。其他的分区、约束还没写。后期加上 缺陷:每个字段后面都有","需要手动剔除,修改过后的已上传,csdn中不知道怎么修改,只好重新上传

    风越ASP代码生成器FireAspCreatorv2.9.rar

    10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名...

    风越ASP代码生成器 试用版

     6、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县的多级选项 ★  7、支持表单提交超过100KB的文本数据,支持文件上载  8、支持输入控件名加密功能,防止他人从客户端HTML中猜解数据字段名 ★ ...

    风越.net代码生成器v2.9

    10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名...

    风越ASP代码生成器 [FireAsp Creator]

    ★  5、支持对用户输入内容进行服务器端与客户端JS双重验证 ★  6、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县的多级选项 ★  7、支持表单提交超过100KB的文本数据,支持文件上载...

    风越ASP代码生成器 2.4

    10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名...

    Delphi最新三层源码

    通由Ole,自动生成了TDATASET。 想用对象,没问题,看下面: 定义: ss: TVALUEOBJECT; ss := TUserVO(pp.GetItem(1)); if ss<>nil then ShowMessage((ss as TUserVO).pName); 之后,你想怎么样就怎么样了。。。。...

    .net50个常用方法简单华丽的分页控件功能大的分页控件 50个实用方法

    ///SqlGetReader()获得SqlDataReader对象 使用完须关闭DataReader,关闭数据库连接 ///SqlGetTable()执行查询语句,返回DataTable ///SqlDataSet()执行查询语句,返回DataSet ///SqlIsCunZai()执行Sql 语句...

    JAVA WEB框架,java网站一个模块只用写一个文件

    //因为主键是自动生成不需要加所以是addByNoKey 返回的布尔值告诉用户是否成功。 2.例如要修改师资队伍中id=5的教师信息: 同样在构造Hyberbin的时候需要给出需要修改的数据放在szdw的POJO类中去,还要给出szdw表的...

    net实用类50超级实用方法赠分页

    ///FileUpload()文件上传 路径upload/ 自动重命名 ///FileDownload()文件下载 调用方法如 FileDownload(Response,Server,文件虚拟路径) ///FileTxtWrite()写入TXT文本 给出要创建Txt 文本的地址 ///...

    net实用类50个常用方法升级版分页

    ///SqlGetReader()获得SqlDataReader对象 使用完须关闭DataReader,关闭数据库连接 ///SqlGetTable()执行查询语句,返回DataTable ///SqlDataSet()执行查询语句,返回DataSet ///SqlIsCunZai()执行Sql 语句查询...

Global site tag (gtag.js) - Google Analytics