我想在VS2010中使用ADOX创建数据库但是在使用'ADOX.catalogClass'时我得到了一个不寻常的错误:
无法嵌入互操作类型'ADOX.CatalogClass'。请改用适用的界面。
实际上,标记为错误的特定行是:ADOX.CatalogClass cat = new ADOX.CatalogClass();
ADOX不能用于VS2010吗?我怎么解决这个问题? 感谢
答案 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);
}