2011-05-27 10 views
10

मुझे यह देखने की ज़रूरत है कि मेरे सी # प्रोग्राम द्वारा उपयोग किए गए एक्सेस डेटाबेस में कोई तालिका मौजूद है या नहीं। पता है कि अन्य डेटाबेस के लिए एसक्यूएल कमांड हैं जो टेबल की एक सूची लौटाएंगे। क्या एक्सेस/जेट डेटाबेस के लिए ऐसा कोई आदेश है?मैं एक्सेस (जेट) डेटाबेस में टेबल की सूची कैसे प्राप्त कर सकता हूं?

उत्तर

11

सिर्फ यह कोशिश कर GetSchema()

connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\access.mdb";  

    connection.Open(); 

    DataTable userTables = connection.GetSchema("Tables"); 
+0

इतने बड़े फैंसी जवाब जब यह सब मैं चाहता था! धन्यवाद!! – CindyH

7

पूर्ण कोड: Get List of Tables in an Access Database - ADO.NET Tutorials

// Microsoft Access provider factory 
DbProviderFactory factory = 
    DbProviderFactories.GetFactory("System.Data.OleDb"); 

DataTable userTables = null; 

using (DbConnection connection = 
      factory.CreateConnection()) 
{ 
    // c:\test\test.mdb 
    connection.ConnectionString = "Provider=Microsoft 
     .Jet.OLEDB.4.0;Data Source=c:\\test\\test.mdb"; 

    // We only want user tables, not system tables 
    string[] restrictions = new string[4]; 
    restrictions[3] = "Table"; 

    connection.Open(); 

    // Get list of user tables 
    userTables = 
     connection.GetSchema("Tables", restrictions); 
} 

// Add list of table names to listBox 
for (int i=0; i < userTables.Rows.Count; i++) 
    listBox1.Items.Add(userTables.Rows[i][2].ToString()) 

यहाँ आप के लिए जवाब है: http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/d2eaf851-fc06-49a1-b7bd-bca76669783e

1

कुछ इस तरह चाल करना चाहिए। खंड Type = 1 तालिका निर्दिष्ट करता है। ध्यान दें कि यह भी परिणाम सेट में सिस्टम तालिकाओं (शामिल होंगे वे उपसर्ग "MSys" से शुरू

SELECT Name FROM MSysObjects WHERE Type = 1 
+0

की कोशिश करो और मुझे मिलता है:। 'रिकार्ड (एस) को पढ़ा नहीं जा सकता है; 'MSysObjects' पर कोई पढ़ने की अनुमति नहीं है। – hawbsl

+0

@hawbsl ऐसा लगता है कि आपको एक्सेस डेटाबेस के भीतर अनुमतियों को संशोधित करने की आवश्यकता हो सकती है। टूल्स मेनू -> सुरक्षा -> उपयोगकर्ता और समूह अनुमतियां। 'डेटा पढ़ें' असाइन करें। MSysObjects तालिका पर व्यवस्थापक उपयोगकर्ता को अनुमति। –

+0

इस तरह की अनुमतियों को बदलना शायद उपयोगकर्ता स्तर की सुरक्षा का उल्लंघन करेगा जो उद्देश्य पर स्थापित किया गया है। टी वह समाधान अंतर्निहित ऑब्जेक्ट पर अनुमतियों को नहीं बदलना है (जो इसे किसी के लिए व्यापक रूप से खुलेगा), लेकिन उपयोगकर्ता नाम/पासवर्ड का उपयोग करने के लिए जिसकी आपको अनुमति है। –

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

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