2012-08-30 27 views
6

Tüm "tablo" adlarını bir OdbcConnection'dan almak istiyorum ve tüm "tablo" adları için tüm sütun adlarını almak istiyorum.Tüm tabloları ve tüm sütunları odbc veritabanından alın

Bu yüzden OdbcConnection.GetSchema() işlevselliği ile karşılaştım. Tüm tablo isimlerini sadece connection.GetSchema("Tables") kullanarak elde etmeyi beceriyorum. Ama şimdi bu tabloların sütun bilgilerini almak istiyorum. Ben connection.GetSchema("Columns") bana sütun bilgileri verir, ancak bu sadece veri kaynağı (Windows CSV sürücüsü kullanarak) bir rasgele/ilk (?) "Tablo" verir, hangi çok paspas yardımcı olmaz.

En zorlayıcı kısım, bu (herhangi) ODBC sürücüsü ile çalışmak zorunda kalacaktır. Hangi temel veri kaynağının kullanılacağını bilmiyorum.

Herhangi bir fikrin var mı?

cevap

7

kolon şeması tüm tablolarda

columns = cn.GetSchema("Columns"); 

İade tüm sütunlar, bütün tabloları

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

Veya tek bir tablo Benzer

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

için

dönecektir.

diğer bilgiler: Schema Restrictions

Düzenleme yeniden

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

benim iki test "tablolar", yani metin dosyaları sütunlar olsun yorumlar. Ek örneğe bakınız. – Fionnuala

+0

@Fionualla: Tabloların isimlerinin belirli bir kelime içermesi mümkün mü? – Saeid

İlgili konular