c# - 我们需要处理 IDbDataParameter 吗?
问题描述
我正在重构遗留代码,我遇到了很多这样的代码,我想知道我是否必须处理 IDbParameter:
Private Function GetSqlObject as Object
Try
Dim parmeters() As IDbDataParameter = CreateParameters(criterias)
reqSQL = "A SQL Request"
dataReader = DBHelper.ExecuteReader(CommandType.Text, reqSQL, parmeters)
While dataReader.Read()
....
End While
Return ...
Finally
DisposeParameters(parm)
If Not dataReader Is Nothing Then
dataReader.Close()
dataReader.Dispose()
End If
End Try
End Sub
Private Sub DisposeParameters(ByVal parameters As IDbDataParameter())
If parameters Is Nothing Then Return
Dim dbDataParameterArray As IDbDataParameter() = parameters
Dim index As Integer = 0
While index < dbDataParameterArray.Length
dbDataParameterArray(index).Dispose()
index += 1
End While
End Sub
我想知道我是否可以通过 using 完全删除 finally 语句:
Using dataReader = DBHelper.ExecuteReader(CommandType.Text, reqSQL, parmeters)
While dataReader.Read()
....
End While
End Using
在这种情况下,我知道这里所说的 dataReader :正确的点来关闭 vb.net 中的数据读取器
但是参数呢?我需要处理它们吗?让他们收集垃圾并完全删除 finally 和DisposeParameters
函数是否安全?
读这篇文章我有点困惑:正确使用 IDisposable 接口
由于参数不是数据库连接等,我认为它是托管的?如果是这样,我不需要处理它?
解决方案
推荐阅读
- java - 从 JSON 响应中提取值
- sql - 在 ORACLE DB 中查找具有共同点的对
- bash - 如何选择在linux文件夹中特定日期创建/修改的文件?
- javascript - 使用 ID 扩展 URL
- c++ - 从 std::istringstream 构造 boost::archive::text_iarchive 的未知异常
- android - 为什么我在 Kotlin 中键入视图名称/ID 时会出现“未解析的引用”错误?
- xml - 提取子字符串的值并对结果求和
- c - 管道和多线程通信问题 [C]
- electron - 在电子中创建多个预加载文件(每页一个)
- bash - bash 链不执行第二个命令,但执行第三个命令