दिलचस्प पोस्ट
एंड्रॉइड एडीबी डिवाइस ऑफ़लाइन, आदेशों को जारी नहीं कर सकते कॉर्स jQuery के AJAX अनुरोध मैं "क्या आप इस विंडो को बंद करना चाहते हैं" प्राप्त करने के बिना एक ब्राउज़र विंडो को कैसे बंद कर सकता हूँ? एंड्रॉइड डिवाइस में डेटा / डेटा फ़ोल्डर का उपयोग कैसे करें? एरलांग में ट्रेस और डीबीजी का उपयोग करना .NET में एक स्ट्रिंग गणित मूल्यांकनकर्ता है? अनावश्यक देरी के बिना बाश में एक आदेश का समय समाप्त ऑब्जेक्ट्स और टाइमर चलाना बीन वैधीकरण @नोट नोबल, @ नॉटबैंक और @ नो एप्लीज जेएसएफ + टोमकेट में काम नहीं करता जावास्क्रिप्ट में घटना को कैसे ट्रिगर करना है? मैं इन कार्यों को वादों के साथ कैसे जोड़ सकता हूं? आईफोन एक्स सिम्युलेटर के ऊपर और नीचे काली सलाखों को देखकर अवधि में सीएसएस निश्चित चौड़ाई मेटलैब में डिफ़ॉल्ट तर्क यूट्यूब पर पेज नेविगेशन का पता लगाने और पेज को प्रस्तुत करने से पहले एचटीएमएल को कैसे संशोधित किया जाए?

पीएलएसक्यूएल जेडीबीसी: आखिरी पंक्ति आईडी कैसे प्राप्त करें?

इस SQL ​​सर्वर स्निपेट के PLSQL (ओरेकल) समकक्ष क्या है?

BEGIN TRAN INSERT INTO mytable(content) VALUES ("test") -- assume there's an ID column that is autoincrement SELECT @@IDENTITY COMMIT TRAN 

सी # में, आप नई पंक्ति का आईडी पुनर्प्राप्त करने के लिए myCommand.ExecuteScalar () को कॉल कर सकते हैं।

ओरेकल में मैं एक नई पंक्ति कैसे सम्मिलित कर सकता हूं, और क्या जेडीबीसी को नए आईडी की एक कॉपी मिल सकती है?

संपादित करें: बालाससी ने एक बहुत अच्छा प्रारंभिक बिंदु प्रदान किया। किसी कारण के लिए जेडीबीसी नाममात्र पैरामीटर बाइंडिंग पसंद नहीं करता है। यह "गलत सेट या पंजीकृत पैरामीटर" SQLException को देता है ये क्यों हो रहा है?

  OracleConnection conn = getAppConnection(); String q = "BEGIN INSERT INTO tb (id) values (claim_seq.nextval) returning id into :newId; end;" ; CallableStatement cs = (OracleCallableStatement) conn.prepareCall(q); cs.registerOutParameter("newId", OracleTypes.NUMBER); cs.execute(); int newId = cs.getInt("newId"); 

वेब के समाधान से एकत्रित समाधान "पीएलएसक्यूएल जेडीबीसी: आखिरी पंक्ति आईडी कैसे प्राप्त करें?"

आम तौर पर आप इसके लिए Statement#getGeneratedKeys() उपयोग करेंगे (उदाहरण के लिए यह भी देखें), लेकिन यह अभी तक (अभी भी) ओरेकल जेडीबीसी ड्राइवर द्वारा समर्थित नहीं है

आपका सबसे अच्छा शर्त है कि या तो RETURNING क्लॉज के साथ उपयोग करें:

 String sql = "BEGIN INSERT INTO mytable(id, content) VALUES (seq_mytable.NEXTVAL(), ?) RETURNING id INTO ?; END;"; Connection connection = null; CallableStatement statement = null; try { connection = database.getConnection(); statement = connection.prepareCall(sql); statement.setString(1, "test"); statement.registerOutParameter(2, Types.NUMERIC); statement.execute(); int id = statement.getInt(2); // ... 

या आग का SELECT sequencename.CURRVAL एक ही लेनदेन में INSERT बाद:

 String sql_insert = "INSERT INTO mytable(content) VALUES (?)"; String sql_currval = "SELECT seq_mytable.CURRVAL FROM dual"; Connection connection = null; PreparedStatement statement = null; Statement currvalStatement = null; ResultSet currvalResultSet = null; try { connection = database.getConnection(); connection.setAutoCommit(false); statement = connection.prepareStatement(sql_insert); statement.setString(1, "test"); statement.executeUpdate(); currvalStatement = connection.createStatement(); currvalResultSet = currvalStatement.executeQuery(sql_currval); if (currvalResultSet.next()) { int id = currvalResultSet.getInt(1); } connection.commit(); // ... 

आप ओरेकल के लौटने वाले खंड का उपयोग कर सकते हैं

 insert into mytable(content) values ('test') returning your_id into :var; 

एक कोड नमूने के लिए इस लिंक को देखें। आपको ओरेकल 10 जी या बाद के संस्करण की आवश्यकता है, और जेडीबीसी ड्राइवर का एक नया संस्करण।

आप getGeneratedKeys () का उपयोग कर सकते हैं, स्पष्ट रूप से कुंजी फ़ील्ड का चयन करके यहां एक स्निपेट है:

  // change the string to your connection string Connection connection = DriverManager.getConnection("connection string"); // assume that the field "id" is PK, and PK-trigger exists String sql = "insert into my_table(id) values (default)"; // you can select key field by field index int[] colIdxes = { 1 }; // or by field name String[] colNames = { "id" }; // Java 1.7 syntax; try-finally for older versions try (PreparedStatement preparedStatement = connection.prepareStatement(sql, colNames)) { // note: oracle JDBC driver do not support auto-generated key feature with batch update // // insert 5 rows // for (int i = 0; i < 5; i++) // { // preparedStatement.addBatch(); // } // // int[] batch = preparedStatement.executeBatch(); preparedStatement.executeUpdate(); // get generated keys try (ResultSet resultSet = preparedStatement.getGeneratedKeys()) { while (resultSet.next()) { // assume that the key's type is BIGINT long id = resultSet.getLong(1); assertTrue(id != 0); System.out.println(id); } } } 

विवरण के लिए देखें: http://docs.oracle.com/cd/E16655_01/java.121/e17657/jdbcvers.htm#CHDEGDHJ