使用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对象,但没有改变。 您能告诉我如何解决这个问题,用户可以在应用程序生成后打开数据库而不关闭(杀死)应用程序吗?
此致
答案 0 :(得分:2)
也许您需要释放该对象。在调用Create:
后尝试添加以下内容Marshal.FinalReleaseComObject(cat.Tables);
Marshal.FinalReleaseComObject(cat.ActiveConnection);
Marshal.FinalReleaseComObject(cat);