ADOX不能用在VS2010中?

时间:2012-12-19 22:59:57

标签: c# visual-studio-2010 adox

我想在VS2010中使用ADOX创建数据库但是在使用'ADOX.catalogClass'时我得到了一个不寻常的错误: 无法嵌入互操作类型'ADOX.CatalogClass'。请改用适用的界面。 实际上,标记为错误的特定行是:ADOX.CatalogClass cat = new ADOX.CatalogClass();

ADOX不能用于VS2010吗?我怎么解决这个问题? 感谢

2 个答案:

答案 0 :(得分:3)

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

   ADOX.Catalog cat = new ADOX.Catalog();

答案 1 :(得分: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);
}