使用自动生成的键

Microsoft JDBC Driver for SQL Server 支持可选的 JDBC 3.0 API 以检索自动生成的行标识符。这项功能的主要意义在于，为更新数据库表的应用程序提供获得 IDENTITY 值的方法，从而无需执行查询以及对服务器进行再次往返通信。

由于 SQL Server 不支持标识符的伪列，因此必须使用自动生成键功能的更新必须对包含 IDENTITY 列的表进行操作。SQL Server 仅允许每个表包含一个 IDENTITY 列。SQLServerStatement 类的 getGeneratedKeys 方法返回的结果集仅包含一列，并且返回的列名为 GENERATED_KEYS。如果对不包含 IDENTITY 列的表请求生成的键，则 JDBC 驱动程序将返回空结果集。

作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建下表：

    CREATE TABLE TestTable
       (Col1 int IDENTITY,
        Col2 varchar(50),
        Col3 int);

在下面的示例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，并构造一条向表添加数据的 SQL 语句，然后运行该语句并显示 IDENTITY 列的值。

    public static void executeInsertWithKeys(Connection con) {
       try {
          String SQL = "INSERT INTO TestTable (Col2, Col3) VALUES ('S', 50)";
          Statement stmt = con.createStatement();
          int count = stmt.executeUpdate(SQL, Statement.RETURN_GENERATED_KEYS);
          ResultSet rs = stmt.getGeneratedKeys();

          ResultSetMetaData rsmd = rs.getMetaData();
          int columnCount = rsmd.getColumnCount();
          if (rs.next()) {
             do {
                for (int i=1; i<=columnCount; i++) {
                   String key = rs.getString(i);
                   System.out.println("KEY " + i + " = " + key);
                }
             } while(rs.next());
          }
          else {
             System.out.println("NO KEYS WERE GENERATED.");
          }
          rs.close();
          stmt.close();
       }
       catch (Exception e) {
          e.printStackTrace();
       }
    }

# 请参阅

通过 JDBC 驱动程序使用语句
发送有关本主题的反馈至 Microsoft。

© 2012 Microsoft。保留所有权利。