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

标签 .net odbc db-schema

我想从 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");

返回所有表中的所有列。

更多信息: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();

关于.net - 从 odbc 数据库中获取所有表和所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12197532/

相关文章:

mysql - 聊天的数据库模式?

c# - 仅在 wpf 上显示 X 和最小化按钮

c# - 只有多个线程之一执行特定代码路径

sql-server - SQL Server 错误 "String Data, Right Truncation"是什么意思以及如何修复它?

asp.net - 使用 ODBC 3.51 将 ASP Visual Web Developer 2008 连接到 MySQL

sql-server - 如何获取现有 sql 2005/2008 数据库的 dbschema 文件?

c# - 在 Entity Framework 查询中使用带有标志的枚举

c# - 如何为 WPF TreeView 设置垂直滚动条,而不是水平滚动条?

c# - 通过 DSN 通过 SQLServer 链接表与 MS Access 数据库进行 ODBC 连接

sql-server - 数据库表上的 1 对 1 关系有异味吗?