`
eimhee
  • 浏览: 2115053 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

三种获得自动生成主键的方法,getGeneratedKeys,专用SQL和可更新的结果集

阅读更多
 简单总结了一下我目前知道的方法。
  1. package test;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. /**
  7.  * 三种获得自动生成主键的方法。
  8.  * 
  9.  * @author 赵学庆 www.java2000.net
  10.  * 
  11.  */
  12. public class TestGetPK {
  13.   public static void main(String[] args) throws Exception {
  14.     Class.forName("com.gbase.jdbc.Driver");
  15.     String url = "jdbc:gbase://localhost/mytest";
  16.     Connection con = DriverManager.getConnection(url, "root""111111");
  17.     System.out.println(getPK1(con));
  18.     System.out.println(getPK2(con));
  19.     System.out.println(getPK3(con));
  20.   }
  21.   /**
  22.    * 使用JDBC 3.0提供的 getGeneratedKeys。推荐使用
  23.    * 
  24.    * @param con
  25.    * @return
  26.    * @throws Exception
  27.    */
  28.   public static long getPK1(Connection con) throws Exception {
  29.     Statement stmt = con.createStatement();
  30.     stmt.executeUpdate("INSERT INTO t_type (name) values ('Can I Get the Auto Increment Field?')",
  31.         Statement.RETURN_GENERATED_KEYS);
  32.     int autoIncKeyFromApi = -1;
  33.     ResultSet rs = stmt.getGeneratedKeys();
  34.     if (rs.next()) {
  35.       autoIncKeyFromApi = rs.getInt(1);
  36.     }
  37.     return autoIncKeyFromApi;
  38.   }
  39.   /**
  40.    * 使用数据库自己的特殊SQL.
  41.    * 
  42.    * @param con
  43.    * @return
  44.    * @throws Exception
  45.    */
  46.   public static long getPK2(Connection con) throws Exception {
  47.     Statement stmt = con.createStatement();
  48.     stmt.executeUpdate("INSERT INTO t_type (name) values ('Can I Get the Auto Increment Field?')",
  49.         Statement.RETURN_GENERATED_KEYS);
  50.     int autoIncKeyFromFunc = -1;
  51.     ResultSet rs = stmt.executeQuery("SELECT LAST_INSERT_ID()");
  52.     if (rs.next()) {
  53.       autoIncKeyFromFunc = rs.getInt(1);
  54.     }
  55.     return autoIncKeyFromFunc;
  56.   }
  57.   /**
  58.    * 使用可更新的结果集。
  59.    * 
  60.    * @param con
  61.    * @return
  62.    * @throws Exception
  63.    */
  64.   public static long getPK3(Connection con) throws Exception {
  65.     Statement stmt = con.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
  66.         java.sql.ResultSet.CONCUR_UPDATABLE);
  67.     ResultSet rs = stmt.executeQuery("SELECT * FROM t_Type");
  68.     rs.moveToInsertRow();
  69.     rs.updateString("name""AUTO INCREMENT here?");
  70.     rs.insertRow();
  71.     rs.last();
  72.     int autoIncKeyFromRS = rs.getInt("id");
  73.     return autoIncKeyFromRS;
  74.   }
  75. }
分享到:
评论

相关推荐

    hugsql, 用于拥抱SQL的Clojure库.zip

    hugsql, 用于拥抱SQL的Clojure库 HugSQL 用于拥抱SQL的Clojure库。文档完整文档位于 hugsql.org 。 API文档API文档最近的更改 0.4.8为:( 问题 #39 ) 添加验证异常为。getGeneratedKeys添加

    MySQL 5.1参考手册

    8.2. myisampack:生成压缩、只读MyISAM表 8.3. mysql:MySQL命令行工具 8.3.1. 选项 8.3.2. mysql命令 8.3.3. 怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的客户端 8.5. ...

    MySQL5.1参考手册官方简体中文版

    10.4.1. 结果字符串 10.4.2. CONVERT() 10.4.3. CAST() 10.4.4. SHOW语句 10.5. Unicode支持 10.6. 用于元数据的UTF8 10.7. 与其它DBMS的兼容性 10.8. 新字符集配置文件格式 10.9. 国家特有字符集 10.10. MySQL支持...

    servlet+jsp+javaBean开发的网站书店(完整源码)

    rs = pstmt_order.getGeneratedKeys();//取得主键 rs.next(); orderId = rs.getInt(1); //返回一个订单号 //将订单项中的数据录入数据库 String sql_item = "insert into tb_orderItem values(null,?...

    mysql5.1中文手册

    myisampack:生成压缩、只读MyISAM表 8.3. mysql:MySQL命令行工具 8.3.1. 选项 8.3.2. mysql命令 8.3.3. 怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的...

    mysql官方中文参考手册

    8.2. myisampack:生成压缩、只读MyISAM表 8.3. mysql:MySQL命令行工具 8.3.1. 选项 8.3.2. mysql命令 8.3.3. 怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的客户端 8.5. ...

    MYSQL中文手册

    8.2. myisampack:生成压缩、只读MyISAM表 8.3. mysql:MySQL命令行工具 8.3.1. 选项 8.3.2. mysql命令 8.3.3. 怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的客户端 8.5...

    MySQL 5.1参考手册中文版

    8.2. myisampack:生成压缩、只读MyISAM表 8.3. mysql:MySQL命令行工具 8.3.1. 选项 8.3.2. mysql命令 8.3.3. 怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的客户端 8.5....

    hibernate.properties

    #hibernate.connection.url jdbc:firebirdsql:localhost/3050:/firebird/test.gdb ## Pointbase #hibernate.dialect org.hibernate.dialect.PointbaseDialect #hibernate.connection.driver_class ...

Global site tag (gtag.js) - Google Analytics