首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ADOX使文件句柄处于打开状态

ADOX使文件句柄处于打开状态
EN

Stack Overflow用户
提问于 2011-04-27 08:14:43
回答 1查看 1.6K关注 0票数 0

有没有人遇到过让ADOX库打开文件句柄的问题?

我遇到了一个关于VB6 -> VB.Net转换的奇怪问题。有一个函数使用ADOX查看给定数据库中的表,并在自动增量属性设置为true的情况下重置所述表中任何列的种子值。

我追踪到了一个调用"col.Properties("Autoincrement").Value“的问题。如果这行代码被注释掉,那么当我在函数末尾同时关闭ADO和ADOX连接时,文件句柄将正确终止。如果我把这一行留在里面,尽管有关闭调用和强制垃圾回收,句柄仍然保持打开状态。

下面是我关闭对象的方式:

代码语言:javascript
复制
System.Runtime.InteropServices.Marshal.ReleaseComObject(adoConn)  
Dim connection As ADODB.Connection = cat.ActiveConnection  
If Not connection Is Nothing Then  
   connection.Close()  
End If  
cat.ActiveConnection = Nothing  
cat = Nothing  

adoConn是ADO连接,cat是ADOX.Catalog对象。col (来自之前)是一个与catalog对象一起使用的ADOX.Column对象。

我最初尝试将此算法转换为使用ADO.Net,并使用DataSet对象,但无法确定如何确定表列是否设置为自动递增。这是与Access 2000数据库btw。

EN

回答 1

Stack Overflow用户

发布于 2012-01-12 03:38:47

我只是遇到了使用ADOX创建数据库后留下锁文件的问题。确保连接已关闭,并且锁定文件未被任何程序资源使用,这可能会有所帮助:

代码语言:javascript
复制
System.Runtime.InteropServices.Marshal.ReleaseComObject(adoConn)

Dim connection As ADODB.Connection = cat.ActiveConnection

If Not connection Is Nothing Then
  connection.Close()   
End If   

'Try adding this below
System.Runtime.InteropServices.Marshal.ReleaseComObject(connection)
System.Runtime.InteropServices.Marshal.ReleaseComObject(cat)
GC.Collect()

cat.ActiveConnection = Nothing   
cat = Nothing 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5797946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档