在VB中与Oracle Data Access (ODP)连接.Net,但不是c#

本文关键字:Net 连接 ODP 中与 VB Oracle Data Access | 更新日期: 2023-09-27 18:13:54

为什么下面的代码在执行时会导致内存泄漏?只有当我在vb.net语言中使用Microsoft Visual Studio 2005或2008时才会出现错误。如果我用c#是,没有问题。

Dim strCon As String = "data source=SRV-10G;user id=Test;password=1234"
dim factory as DbProviderFactory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
Dim conexao As IDbConnection = factory.CreateConnection
conexao.ConnectionString = strCon
conexao.Open()

For cont As Integer = 1 To 100000
  Dim comando As IDbCommand = conexao.CreateCommand()
  comando.CommandText = "Select * from tabela where campo = " & cont
  Dim leitor As IDataReader = comando.ExecuteReader
  While leitor.Read
    Dim v As String = leitor.GetValue(1).ToString
  End While
  leitor.Close()
  leitor.Dispose()
  comando.Dispose()
Next
conexao.Close()
conexao.Dispose()

在VB中与Oracle Data Access (ODP)连接.Net,但不是c#

如何知道存在内存泄漏?使用垃圾收集的语言怎么可能出现内存泄漏?如果您得到一条明确告诉您存在内存泄漏的错误消息,则可能是数据库驱动程序本身存在问题,而这个问题可能是用任何语言编写的。基于你所使用的。net语言,针对该驱动程序编写任何类型的。net代码都不会造成任何问题。

您发布的代码看起来不错。尽管VB。. NET有一个Using语句可能会有所帮助(至少会使你的代码更容易阅读!)。在给出更多的建议之前,你需要发布更多的信息。

你可能想看看这个老答案:有没有像样的c#分析器?尽管特定于c#,但所有。net内存分析器都应该适用于VB。