我想使用adox在VS2010中创建数据库,但是在使用'adox.catalogclass'时,我会得到异常错误:Interop类型的" Adox.CatalogClass"无法嵌入。改用适用的接口。实际上,被标记为错误的特定行是: ADOX.CatalogClass cat = new ADOX.CatalogClass();
Adox对VS2010不起作用吗?我该如何解决?谢谢
您在参考上设置为true的"嵌入Interop类型"选项。非常好的功能,但它不直接使用XXXClass包装器支持。不直觉,但是您可以使用 new 运算符创建COM接口的实例。更改您的代码以摆脱错误:
ADOX.Catalog cat = new ADOX.Catalog();
我在vs2010中使用adox.catalog,而不是目录clos。这是我在哪里使用的示例:
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);
}