首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ADOX不能在VS2010中使用吗?

ADOX不能在VS2010中使用吗?
EN

Stack Overflow用户
提问于 2012-12-20 06:59:57
回答 2查看 3.3K关注 0票数 1

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

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

EN

回答 2

Stack Overflow用户

发布于 2013-01-01 00:20:25

您在引用上将"Embed interop types“选项设置为True。非常好的特性,但它不支持直接使用XxxClass包装器。不直观,但您可以使用new运算符创建COM接口的实例。将您的代码更改为以下代码以消除错误:

代码语言:javascript
复制
   ADOX.Catalog cat = new ADOX.Catalog();
票数 3
EN

Stack Overflow用户

发布于 2012-12-31 22:09:01

我在VS2010中通过ADOX.Catalog使用了ADOX,而不是CatalogClass。下面是我使用它的一个例子:

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13962684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档