1

VS2010 で ADOX を使用してデータベースを作成したいのですが、'ADOX.catalogClass' を使用すると異常なエラーが発生します: Interop タイプ 'ADOX.CatalogClass' を埋め込むことはできません。代わりに適切なインターフェースを使用してください。実際にエラーとしてマークされている特定の行は次のとおりです。 ADOX.CatalogClass cat = new ADOX.CatalogClass();

ADOX は VS2010 では機能しませんか? どうすればこれを解決できますか? ありがとう

4

2 に答える 2

3

参照で [Embed interop types] オプションが True に設定されています。非常に優れた機能ですが、XxxClass ラッパーを直接使用することはサポートされていません。直感的ではありませんが、 new演算子を使用して COM インターフェイスのインスタンスを作成できます。コードを次のように変更して、エラーを取り除きます。

   ADOX.Catalog cat = new ADOX.Catalog();
于 2012-12-31T16:20:25.333 に答える
0

CatalogClass ではなく、ADOX.Catalog を使用して VS2010 で ADOX を使用しました。これが私がそれを使用する場所の例です:

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);
}
于 2012-12-31T14:09:01.397 に答える