0

使用 ADOX 目录类,我正在尝试创建一个空的 Ms Access 数据库。代码工作正常(据我所知)并生成数据库,但是当我尝试从 Windows 资源管理器打开数据库时,我得到“无法使用 name.accdb ; 文件已在使用”错误消息。我检查了文件目录,并且 name.idb 文件也出现在目录中,而没有打开数据库。关闭 C# windows 窗体应用程序后,name.idb 消失,我可以打开数据库。这是我用来使用 ADOX 创建数据库的代码。

 public void CreateDatabase()
    {
        string databaseName = txtFileName.Text;
        try
        {
            ADOX.Catalog cat = new ADOX.Catalog();

            if (!File.Exists(databaseName + ".accdb"))
            {
                cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data 
                 Source=D:\\" + databaseName + ".accdb" + ";");
                cat = null;
            }
            cat = null;
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message, e.Source);
        }
    }

我还尝试通过实现 IDispaosable 接口来处理 cat 对象,但没有任何改变。你能告诉我如何解决这个问题,用户可以在应用程序生成后打开数据库而不关闭(杀死)应用程序吗?

问候

4

1 回答 1

2

也许您需要释放该对象。在调用 Create 后尝试添加以下内容:

Marshal.FinalReleaseComObject(cat.Tables);
Marshal.FinalReleaseComObject(cat.ActiveConnection);
Marshal.FinalReleaseComObject(cat);
于 2012-12-31T14:11:48.993 回答