有没有人遇到过让ADOX库打开文件句柄的问题?
我遇到了一个关于VB6 -> VB.Net转换的奇怪问题。有一个函数使用ADOX查看给定数据库中的表,并在自动增量属性设置为true的情况下重置所述表中任何列的种子值。
我追踪到了一个调用"col.Properties("Autoincrement").Value“的问题。如果这行代码被注释掉,那么当我在函数末尾同时关闭ADO和ADOX连接时,文件句柄将正确终止。如果我把这一行留在里面,尽管有关闭调用和强制垃圾回收,句柄仍然保持打开状态。
下面是我关闭对象的方式:
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。
发布于 2012-01-12 03:38:47
我只是遇到了使用ADOX创建数据库后留下锁文件的问题。确保连接已关闭,并且锁定文件未被任何程序资源使用,这可能会有所帮助:
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 https://stackoverflow.com/questions/5797946
复制相似问题