1

我想使用 ADOX 在 VS2010 中创建数据库,但在使用“ADOX.catalogClass”时出现异常错误:无法嵌入互操作类型“ADOX.CatalogClass”。请改用适用的接口。实际上,被标记为错误的特定行是: ADOX.CatalogClass cat = new ADOX.CatalogClass();

ADOX 不适用于 VS2010 吗?我该如何解决这个问题?谢谢

4

2 回答 2

3

您在参考上将“嵌入互操作类型”选项设置为 True。非常好的特性,但它不支持直接使用 XxxClass 包装器。不直观,但您可以使用new运算符创建 COM 接口的实例。将您的代码更改为此以消除错误:

   ADOX.Catalog cat = new ADOX.Catalog();
于 2012-12-31T16:20:25.333 回答
0

我在 VS2010 中使用 ADOX 和 ADOX.Catalog,而不是 CatalogClass。这是我使用它的示例:

private void CreateAndExportLegacyFile(string exportFilePath)
{
    var connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;";
    connectionString += "Data Source=" + exportFilePath + ";Jet OLEDB:Engine Type=5";

    var catalog = new Catalog();
    catalog.Create(connectionString);

    var table = new Table { Name = "Main" };

    #region Column mapping
    table.Columns.Append("ID", DataTypeEnum.adVarWChar, 50);
    // Snipped rest of them
    #endregion

    foreach (Column column in table.Columns)
    {
        if (column.Name != "ID")
        {
            column.Attributes = ColumnAttributesEnum.adColNullable;
        }
    }

    catalog.Tables.Append(table);

    Marshal.FinalReleaseComObject(table);
    Marshal.FinalReleaseComObject(catalog.Tables);
    Marshal.FinalReleaseComObject(catalog.ActiveConnection);
    Marshal.FinalReleaseComObject(catalog);
}
于 2012-12-31T14:09:01.397 回答