处置Adox对象的问题

时间:2012-07-21 21:09:46

标签: c# adox

使用ADOX Catalog类我试图创建一个空的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对象,但没有改变。 您能告诉我如何解决这个问题,用户可以在应用程序生成后打开数据库而不关闭(杀死)应用程序吗?

此致

1 个答案:

答案 0 :(得分:2)

也许您需要释放该对象。在调用Create:

后尝试添加以下内容
Marshal.FinalReleaseComObject(cat.Tables);
Marshal.FinalReleaseComObject(cat.ActiveConnection);
Marshal.FinalReleaseComObject(cat);