JDBC 3.0 获得数据库的自动生成的数值

一般是数据库中 Id 列是自动增长,比如MySQL 和 SQLServer 的主键,以及使用默认值的字段
先看代码


  1. pstat = con.prepareStatement(insertSQ, Statement.RETURN_GENERATED_KEYS); // 这句的参数是关键  
  2. // 这里是其他的一些SQL参数  
  3. if (pstat.executeUpdate() == 1) {  
  4.   rs = pstat.getGeneratedKeys();  // 用来获得生成的数值  
  5.   if (rs.next()) {  
  6.     long newId = Long.parseLong(rs.getString(1)); // 拿到数值  
  7.   }  
 
      pstat = con.prepareStatement(insertSQ, Statement.RETURN_GENERATED_KEYS); // 这句的参数是关键
      // 这里是其他的一些SQL参数
      if (pstat.executeUpdate() == 1) {
        rs = pstat.getGeneratedKeys();  // 用来获得生成的数值
        if (rs.next()) {
          long newId = Long.parseLong(rs.getString(1)); // 拿到数值
        }
    }

提示
JDBC3.0是1个jar,2.0是3个jar
在3.0里面的URL和Driver是这样写的


  1. jdbc:sqlserver://localhost  
  2. com.microsoft.sqlserver.jdbc.SQLServerDriver  
jdbc:sqlserver://localhost
com.microsoft.sqlserver.jdbc.SQLServerDriver

请注意看,和2.0的区别


  1. jdbc:microsoft:sqlserver://localhost  
  2. com.microsoft.jdbc.sqlserver.SQLServerDriver  
jdbc:microsoft:sqlserver://localhost
com.microsoft.jdbc.sqlserver.SQLServerDriver


RETURN_GENERATED_KEYS
static final int RETURN_GENERATED_KEYS
该常量指示生成的键应该可用于获取。

getGeneratedKeys
ResultSet getGeneratedKeys() throws SQLException
获取由于执行此 Statement 对象而创建的所有自动生成的键。如果此 Statement 对象没有生成任何键,则返回空的 ResultSet 对象。
注:如果未指定表示自动生成键的列,则 JDBC 驱动程序实现将确定最能表示自动生成键的列。


返回:
包含通过执行此 Statement 对象自动生成的键的 ResultSet 对象
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
1.4

freedom -
共有0个回答