понедельник, 18 июня 2012 г.

Как получить ID добавленных записей в базу данных MS SQL

Или ответ на ошибку:
com.microsoft.sqlserver.jdbc.SQLServerException: Инструкция не вернула результирующий набор.


Пример:
public static void executeInsertWithKeys(Connection con) {
  try {
      String SQL = "INSERT INTO TestTable (Col2, Col3) VALUES ('S', 50)";
      Statement stmt = con.createStatement();

// внимательно executeUpdate, а не exequteQuery !
      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();
  }
}