2012-08-30 9 views
6

से सभी टेबल और सभी कॉलम प्राप्त करें मैं ओडीबीसीकनेक्शन से सभी "टेबल" नाम प्राप्त करना चाहता हूं, और सभी "टेबल" नामों के लिए मैं सभी कॉलम नामों को प्राप्त करना चाहता हूं।ओडीबीसी डेटाबेस

तो मैं OdbcConnection.GetSchema() कार्यक्षमता में आया। मैं बस connection.GetSchema("Tables") का उपयोग कर सभी टेबल नाम प्राप्त करने के लिए manges। लेकिन अब मैं उन तालिकाओं के लिए कॉलम जानकारी प्राप्त करना चाहता हूं। मैंने देखा कि connection.GetSchema("Columns") मुझे कॉलम जानकारी देगा, लेकिन यह केवल डेटासोर्स (विंडोज सीएसवी ड्राइवर का उपयोग करके) में यादृच्छिक/पहली (?) "तालिका" से देता है, जो बहुत मच्छ में मदद नहीं करता है।

सबसे चुनौतीपूर्ण हिस्सा है, जिसे किसी भी (अधिकांश) ओडीबीसी ड्राइवरों के साथ काम करना होगा। मुझे नहीं पता कि कौन सा अंतर्निहित डेटासोर्स इस्तेमाल किया जाएगा।

कोई विचार?

उत्तर

7

स्तंभ स्कीमा सभी तालिकाओं

cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, 
     new Object[] { null, null, null, null }); 

या एक एकल तालिका

cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, 
     new Object[] { null, null, "table1", null }); 

इसी के लिए

columns = cn.GetSchema("Columns"); 

रिटर्न सभी तालिकाओं में सभी स्तंभों वापस आ जाएगी।

और जानकारी: Schema Restrictions

संपादित फिर से टिप्पणी

string cs = @"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=z:\docs;"; 
    OdbcConnection cn = new OdbcConnection(cs); 
    cn.Open(); 

    DataTable tables = cn.GetSchema("Tables"); 
    DataTable columns = cn.GetSchema("Columns"); 

    foreach (DataRow row in columns.Rows) 
    { 
     Console.WriteLine(row["COLUMN_NAME"].ToString()); 
     Console.WriteLine(row["TABLE_NAME"].ToString()); 
    } 
    Console.Read(); 
+0

मैं अपने दो परीक्षण "टेबल", कि है, पाठ फ़ाइलों से कॉलम मिलता है। अतिरिक्त उदाहरण देखें। – Fionnuala

+0

@Fionualla: क्या टेबलों को वापस करना संभव है कि उनके नाम में एक विशिष्ट शब्द है? – Saeid

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