2012-07-16 14 views
10

के माध्यम से प्राथमिक कुंजी के स्तंभ नाम पाने के लिए मैं कोड इस प्रकार है: जबकि rs.next() हमेशा false लौटकैसे JDBC

DatabaseMetaData dmd = connection.getMetaData(); 
ResultSet rs = dmd.getPrimaryKeys(null, null, tableName); 

while(rs.next()){ 
    primaryKey = rs.getString("COLUMN_NAME"); 
} 

रु रिक्त नहीं है, किसी को भी इसके बारे में विचार है? धन्यवाद।

+2

पुनः प्राप्त करने के कौन से डीबी इंजन हैं में केस संवेदी है आप उपयोग कर रहे हैं? चूंकि सभी ड्राइवर/डीबी इंजन jdbc से medatada पढ़ने के लिए समर्थन नहीं कर सकते हैं। – Augusto

+0

आम तौर पर हम इसके लिए ** ResultSetMetaData ** (http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSetMetaData.html) का उपयोग करते हैं। हालांकि आपकी आवश्यकता के लिए मुझे कोई उपयुक्त विधि नहीं मिल सका। – ManuPK

+1

@ManuPK इस मामले में 'डेटाबेस मेटाडेटा' सही वर्ग है। –

उत्तर

3
  1. मेटाडाटा इंटरफ़ेस कार्यान्वयन ड्राइवर विक्रेताओं द्वारा कार्यान्वित किया गया था। यह कुछ ड्राइवर और कुछ डीबी द्वारा समर्थित नहीं हो सकता है। यहां जावाडोक से टेक्स्ट है: कुछ डेटाबेस मेटाडेटा विधियां परिणामसेट ऑब्जेक्ट्स के रूप में जानकारी की सूचियां लौटाती हैं। नियमित परिणामसेट विधियां, जैसे GetString और getInt, इन परिणामसेट ऑब्जेक्ट्स से डेटा पुनर्प्राप्त करने के लिए उपयोग की जा सकती हैं। यदि मेटाडेटा का एक दिया गया फॉर्म उपलब्ध नहीं है, तो एक खाली परिणामसेट वापस कर दिया जाएगा।

  2. तालिका नाम ओरेकल

  3. या कोशिश नीचे दृष्टिकोण

     
    DatabaseMetaData dm = conn.getMetaData(); 
    ResultSet rs = dm.getExportedKeys("" , "" , "table1"); 
    while(rs.next()) 
    {  
        String pkey = rs.getString("PKCOLUMN_NAME"); 
        System.out.println("primary key = " + pkey); 
    } 
    

    आप भी getCrossReference या getImportedKeys उपयोग कर सकते हैं प्राथमिक कुंजी

+0

क्या प्राथमिक प्रकार के प्रकार को प्राप्त करने का कोई तरीका है चाबियाँ भी? – Zaheer

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