【问题标题】:Get tables/schema from access 97 database从 access 97 数据库中获取表/模式
【发布时间】:2017-12-14 23:26:06
【问题描述】:

我有一个 Access 97 数据库,我试图从中获取数据架构和数据。我不知道有多少个表,不知道它们叫什么,也不知道有什么列名。

我以编程方式进入数据库没有问题,但是您如何发现架构?

我正在使用它来获取架构表:

static DataTable GetSchemaTable(string connectionString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        connection.Open();
        DataTable schemaTable =
            connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
            new object[] { null, null, null, "TABLE" });
        return schemaTable;
    }
}

【问题讨论】:

    标签: c# ms-access-97


    【解决方案1】:

    GetOleDbSchemaTableOleDbSchemaGuid.Tables 字段返回目录中定义的表(包括视图名称),而对象数组引用此构造:

    new object { "table_catalog", "table_schema", "table_name", "table_type" }
    

    OleDbSchemaGuid 由 3 个字段组成:OleDbSchemaGuid.TablesOleDbSchemaGuid.ColumnsOleDbSchemaGuid.Primary_Keys。要获取表格属性,可以使用OleDbSchemaGuid.Columns 字段:

    connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
            new object[] { "table_catalog", "table_schema", "table_name", "column_name" });
    

    由于您要查找表架构,因此设置第二个参数并将另一个参数保留为空值:

    var columns = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
            new object[] { null, "schema_name", null, null });
    

    如果您想同时通过表模式和表名获取属性,也可以使用第三个参数:

    var columns = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
            new object[] { null, "schema_name", "table_name", null });
    

    【讨论】:

      【解决方案2】:

      你的方向是好的 对于每个表,您可以再次调用 GetOleDbSchemaTable,但在这种情况下,使用不同的参数:

          DataTable schemaColumns =
              connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
              new object[] { null, "MyTableName", null, null });
      

      通过OleDbSchemaGuid,您可以指定检索哪个架构,并使用过滤器指定表架构

      this link,您可以找到有关如何过滤的信息,例如通过表名检索列信息。限制是一个数组,你应该把过滤器值放在它对应的位置

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        相关资源
        最近更新 更多