我想使用ADOX在VS2010中创建一个数据库,但是在使用'ADOX.catalogClass‘时,我得到了一个不寻常的错误:互操作类型'ADOX.CatalogClass’不能被嵌入。请改用适用的接口。实际上,被标记为错误的特定行是:ADOX.CatalogClass cat = new ADOX.CatalogClass();
ADOX不适用于VS2010吗?我该如何解决这个问题呢?谢谢
发布于 2013-01-01 00:20:25
您在引用上将"Embed interop types“选项设置为True。非常好的特性,但它不支持直接使用XxxClass包装器。不直观,但您可以使用new运算符创建COM接口的实例。将您的代码更改为以下代码以消除错误:
ADOX.Catalog cat = new ADOX.Catalog();发布于 2012-12-31 22:09:01
我在VS2010中通过ADOX.Catalog使用了ADOX,而不是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);
}https://stackoverflow.com/questions/13962684
复制相似问题