JDBC 3.0ã?®ã‚ー自動生æˆ?ã?«é–¢ã?™ã‚‹æ©Ÿèƒ½ã?«ã‚ˆã‚Šã€?索引ã?®ä¸€éƒ¨ã?‚ã‚‹ã?„ã?¯æ—¢å®šå€¤ã?®å‰²ã‚Šå½“ã?¦ã‚‰ã‚Œã?Ÿåˆ—ã?‹ã‚‰å€¤ã‚’å?–å¾—ã?™ã‚‹æ–¹æ³•ã?Œã?‚りã?¾ã?™ã€‚ Derbyã?«ã?¯è‡ªå‹•増分ã?®æ©Ÿèƒ½ã?Œã?‚ã?£ã?¦ã€?ã?“ã?®æ©Ÿèƒ½ã?«ã‚ˆã‚Šã€?データベースã?«ã‚ˆã‚Šè‡ªå‹•çš„ã?«å¢—分ã?•れã?Ÿå€¤ã‚’ã?¨ã‚‹åˆ—ã‚’ã€?ユーザã?¯è¡¨ã?«å®šç¾©ã?™ã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚ JDBC 3.0ã?§ã?¯Statement.getGeneratedKeysメソッドを呼んã?§ã?“ã?®ç¨®é¡žã?®åˆ—ã?®å€¤ã‚’å?–å¾—ã?™ã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚ã?“ã?®ãƒ¡ã‚½ãƒƒãƒ‰ã?¯å€¤ã?«è‡ªå‹•生æˆ?ã‚ーをã?¨ã‚‹åˆ—ã‚’æŒ?ã?¤ResultSetã‚’è¿”ã?—ã?¾ã?™ã€‚ ã?¾ã?ŸgetGeneratedKeysã?‹ã‚‰è¿”ã?•れã?ŸResultSetオブジェクトã?«ã?¦ResultSet.getMetaDataメソッドを呼んã?§ã€?IDENTITY_VAL_LOCALã?‹ã‚‰è¿”ã‚‹ã?®ã?¨å?Œæ§˜ã?ªResultSetMetaDataオブジェクトを得るã?“ã?¨ã‚‚ã?§ã??ã?¾ã?™ã€‚
ユーザã?¯Connection.prepareStatementメソッドやã€?Statement.executeメソッドã€?Statement.executeUpdateメソッドã?®äºŒã?¤ç›®ã?®å¼•æ•°ã?«ã€?以下ã?«ç¤ºã?™ã?„ã?šã‚Œã?‹ã?®å€¤ã‚’渡ã?™ã?“ã?¨ã?§ã€?自動生æˆ?ã?•れã?Ÿåˆ—ã‚’å?–å¾—ã?§ã??ã?¾ã?™ã€‚
以下�よ��定義�れ�TABLE1���表��る����。
CREATE TABLE TABLE1 (C11 int, C12 int GENERATED ALWAYS AS IDENTITY)
以下�三��コード�����を行���。�����TABLE1�挿入�れ�C12 �値を���ResultSetを生����。
コード 1:
Statement stmt = conn.createStatement(); stmt.execute( "INSERT INTO TABLE1 (C11) VALUES (1)", Statement.RETURN_GENERATED_KEYS); ResultSet rs = stmt.getGeneratedKeys();
コード 2:
Statement stmt = conn.createStatement(); String [] colNames = new String [] { "C12" }; stmt.execute( "INSERT INTO TABLE1 (C11) VALUES (1)", colNames); ResultSet rs = stmt.getGeneratedKeys();
コード 3:
Statement stmt = conn.createStatement(); int [] colIndexes = new int [] { 2 }; stmt.execute( "INSERT INTO TABLE1 (C11) VALUES (1)", colIndexes); ResultSet rs = stmt.getGeneratedKeys();
ã‚‚ã?—自動生æˆ?ã?•れã?Ÿåˆ—ã‚’å?–å¾—ã?§ã??るよã?†ã?«ã?™ã‚‹æŒ‡å®šã?Œã?ªã?‘れã?°ã€? Statement.getGeneratedKeysã?¸ã?®å‘¼ã?³å‡ºã?—ã?¯nullã?®ResultSetã‚’è¿”ã?—ã?¾ã?™ã€‚