एक ही रास्ता है कि कुछ JDBC ड्राइवरों को लौटने Statement.RETURN_GENERATED_KEYS
के लिए निम्नलिखित में से कुछ करना है:
long key = -1L;
Statement statement = connection.createStatement();
statement.executeUpdate(YOUR_SQL_HERE, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = statement.getGeneratedKeys();
if (rs != null && rs.next()) {
key = rs.getLong(1);
}
क्या ऐसा करने का कोई तरीका है PreparedStatement
?
संपादित करें
कारण मैंने पूछा कि क्या मैं PreparedStatement
निम्नलिखित परिदृश्य पर विचार कर सकता हूं :
private static final String SQL_CREATE =
"INSERT INTO
USER(FIRST_NAME, MIDDLE_NAME, LAST_NAME, EMAIL_ADDRESS, DOB)
VALUES (?, ?, ?, ?, ?)";
में USER
तालिका वहाँ एक है PRIMARY KEY (USER_ID)
जो है एक BIGINT AUTOINCREMENT
(इसलिए क्यों आप इसे में नहीं दिख रहा है SQL_CREATE
स्ट्रिंग।
अब, मैं ?
उपयोग को आबाद करता हूं PreparedStatement.setXXXX(index, value)
। मैं वापस लौटना चाहता हूं ResultSet rs = PreparedStatement.getGeneratedKeys()
। इसे कैसे प्राप्त किया जा सकता है?
This method with argument cannot be called on a PreparedStatement or CallableStatement.
इसका मतलब है कि हमें executeUpdate () का उपयोग तर्क के बिना करना होगा भले हीexecuteUpdate(arg)
विधि ReadyedStatement वर्ग में विरासत में मिली हो, लेकिन हमें इसका उपयोग करने की आवश्यकता नहीं है अन्यथा हमें SQLException मिलेगी।