.net 从odbc数据库获取所有表和所有列

.net 从odbc数据库获取所有表和所有列,.net,odbc,db-schema,.net,Odbc,Db Schema,我希望从OdbcConnection获取所有“表”名称,对于所有“表”名称,我希望接收所有列名 所以我遇到了OdbcConnection.GetSchema()函数性。我只需使用connection.GetSchema(“Tables”)即可获得所有表名。但是现在我想获取这些表的列信息。我注意到,connection.GetSchema(“Columns”)将为我提供列信息,但这仅从数据源中的随机/第一个(?)表(使用Windows CSV驱动程序)中提供,这并没有多大帮助 最具挑战性的部分是,

我希望从OdbcConnection获取所有“表”名称,对于所有“表”名称,我希望接收所有列名

所以我遇到了
OdbcConnection.GetSchema()
函数性。我只需使用
connection.GetSchema(“Tables”)
即可获得所有表名。但是现在我想获取这些表的列信息。我注意到,
connection.GetSchema(“Columns”)
将为我提供列信息,但这仅从数据源中的随机/第一个(?)表(使用Windows CSV驱动程序)中提供,这并没有多大帮助

最具挑战性的部分是,它必须与任何(大多数)ODBC驱动程序一起工作。我不知道将使用哪个底层数据源


有什么想法吗?

列架构将返回所有表

cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
       new Object[] { null, null, null, null });
还是一张桌子

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

columns = cn.GetSchema("Columns");
返回所有表中的所有列

更多信息:

重新编辑评论

    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();

我知道现在帮助原始海报已经太晚了,但是如果它能帮助其他人,我做了一个小项目,它将遍历所有ODBC表,并为每个表创建一个类,将列名作为字符串字段。您可以使用这些类来组合字符串查询


我从两个测试“表”(即文本文件)中获取列。请参阅其他示例。@Fionualla:是否可以返回其名称包含特定单词的表?