博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#调用ADOX创建ACCESS数据文件后关闭连接
阅读量:5234 次
发布时间:2019-06-14

本文共 1063 字,大约阅读时间需要 3 分钟。

转载自:http://blog.csdn.net/baple/article/details/8131717

用ADOX创建ACCESS数据文件后,*.ldb文件出现,直到程序关闭后才消失。怎样可以使那个*.ldb文件不出来呢?(具体它出来会有什么坏处?我也没细想,反正就是不想它出现。)

Interop.ADOX.dll应该是一个com组件,和.Net的不同,那个时代还没有引入垃圾回收机制,没有Dispose()……不能对ActiveConnection进行Dispose(),Catalog也是。

设ActiveConnection=null;Catalog=null;这样看似销毁,实际好像只是把指针设为null,而真正的对象,还没有变化。

而在C#里ActiveConnection没有Close()方法……

搜了半天,还是在一个日本网站首先见到解决方法的。可能是搜索方法不对吧。

最终将方法定位在这两个语句上(单独用其中一个不行,要两个同时用):

System.Runtime.InteropServices.Marshal.FinalReleaseComObject(catalog.ActiveConnection);  

System.Runtime.InteropServices.Marshal.FinalReleaseComObject(catalog);

using 
ADOX;  
// csc ... /r:Interop.ADOX.dll ...
// ... other code ...
public 
bool 
CreateDataFile()
{
 
ADOX.Catalog catalog = 
new 
Catalog();
 
try
 
{
  
catalog.Create(ConnString);
  
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(catalog.ActiveConnection);
  
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(catalog);
  
return 
true
;
 
}
 
catch 
(Exception ex)
 
{
  
Console.WriteLine(ex.Message);
  
return 
false
;
 
}
}

转载于:https://www.cnblogs.com/Harbour9354/p/8418610.html

你可能感兴趣的文章
P1908-逆序对
查看>>
P1192-台阶问题
查看>>
ACM模板——康托展开
查看>>
P1025-数的划分
查看>>
P1305-新二叉树
查看>>
第24章 项目5:虚拟茶话会
查看>>
python 读 xlsx
查看>>
一、使用pip安装Python包
查看>>
spring与quartz整合
查看>>
3.Compound data types
查看>>
USACO Arithmetic Progressions 【构造等差数列】
查看>>
测试Writer
查看>>
caioj1441:第k小的数Ⅰ
查看>>
Kattis之旅——Eight Queens
查看>>
小程序如何封装自定义组件(Toast)
查看>>
VS Code + Anaconda打造舒适的Python环境
查看>>
3.PHP 教程_PHP 语法
查看>>
readonly, const, static, static readonly 关键字实例说明
查看>>
Duilib扩展《01》— 双击、右键消息扩展
查看>>
6.1.2.10 超链接美化
查看>>