我们将一些过时的代码从VB6迁移到VB.net,之前的代码使用ADODB连接到oracle。下面是代码的样子
Dim cmd As New ADODB.Command
' stored procedures execution here
cmd = Nothing // I want to dispose this cmd Object
Nothing
在VB6中工作,但它在.NET中造成很多麻烦,数据库上有开放的游标。我知道我们应该使用最新的库并摆脱ADODB但是现在我有办法处理这个对象。我试过了cmd.Dispose()
,但这没效果。
答案 0 :(得分:1)
使用Marshal.ReleaseComObject整理COM对象。 ADODDB是通过COM Interop使用的COM库。
通过COM-Interop使用的COM对象不具有Dispose
方法,但仍可能需要手动整理。与“正确的”.Net对象形成对比可能有Dispose
方法,或实现IDisposable
。
答案 1 :(得分:0)
在VB.net(或C#)中,应该处理的类应该包含Dispose()
方法。不需要处理的类不应包含Dispose()
方法。
在你的情况下,Command
实例可能不需要处理,但我会下注Connection
实例(你没有包含在你的示例代码中,但我很漂亮确定你有)。