2011-02-04 13 views
9

में रिकॉर्ड किए गए रिकॉर्ड की आईडी पुनर्प्राप्त करें, मैं जेडीबीसी के साथ जावा डीबी डेटाबेस से कनेक्ट कर रहा हूं और अंतिम रिकॉर्ड डालने वाले आईडी (जो ऑटो वृद्धि पर है) को पुनर्प्राप्त करना चाहता हूं।जावा डीबी (डर्बी) डेटाबेस

मुझे लगता है कि यह एक आम सवाल है, लेकिन मैं solutions उदाहरण के लिए एमएस एसक्यूएल सर्वर का उपयोग कर जावा डीबी के बराबर क्या है?

उत्तर

19

इसके लिए डीबीएमएस विशिष्ट एसक्यूएल का उपयोग करने की आवश्यकता नहीं है।

यही getGeneratedKeys() है।

जब preparing your statement आप नाम (रों) स्वत: जनरेट स्तंभों की है जिसे आप getGeneratedKeys()

 
PreparedStatement pstmt = connection.prepareStatement(
    "insert into some_table (col1, col2, ..) values (....)", 
     new String[] { "ID_COLUMN"}); 

pstmt.executeUpdate(); 

ResultSet rs = pstmt.getGeneratedKeys(); // will return the ID in ID_COLUMN 

+0

मैं सिर्फ इस बात की पुष्टि करना चाहते हैं का उपयोग कर प्राप्त कर सकते हैं गुजरती हैं, सोचा था कि मैं 99% यकीन है, यह होगा अभी भी इच्छित ऑटो-जनरेटेड कॉलम मान वापस लौटाएं, भले ही 'getGeneratedKeys() 'का उपयोग करके कॉलम मान डालने और लाने के बीच कई डालने वाले वक्तव्य निष्पादित किए गए हों? –

2

आप IDENTITY_VAL_LOCAL फ़ंक्शन का उपयोग करके जो भी ढूंढ रहे हैं उसे प्राप्त करने में सक्षम हो सकते हैं। (Derby Reference)

यह फ़ंक्शन "कनेक्शन के लिए पहचान कॉलम का सबसे हाल ही में असाइन किया गया मान" वापस लौटाएगा, जहां असाइनमेंट एक VALUES क्लॉज का उपयोग करके एक पंक्ति INSERT कथन के परिणामस्वरूप हुआ था। "

यह ध्यान देने योग्य है कि यह फ़ंक्शन संबंधित पहचान कॉलम के वास्तविक डेटा प्रकार के बावजूद DECIMAL (31,0) वापस कर देगा।

इसके अलावा, यह केवल एकल पंक्ति प्रविष्टियों के लिए काम करता है जिसमें एक VALUES क्लॉज होता है।

संबंधित मुद्दे