这样写返回SqlDataReader的方法有问题吗?

zsx123 2008-08-20 11:30:04
'定义ADO.Net对象
Private privateConnection As SqlConnection
Private privateCommand As SqlCommand
Private privateDataReader As SqlDataReader
Private privateXMLReader As XmlReader
Private privateSQLDataAdapter As SqlDataAdapter
Private privateDataSet As DataSet
Private privateConnectionString As String

'定义名称,释放内存对象,错误处理对象变量
Private privateModuleName As String
Private privateDisposedBoolean As Boolean

'定义名称,释放内存对象,错误处理对象变量
Private Const privateExceptionMessage As String = "数据应用错误。错误信息可能记录在事件日志中"
'定义SQL数据类型
Public Enum SQLDataType
SQLString
SQLChar
SQLInteger
SQLBit
SQLDateTime
SQLDecimal
SQLMoney
SQLImage
End Enum

#Region "runSQLDataReader - 输入SQL语句,返回一个DataReader"
'返回DataReader
'sql:查询字符串
Public Function RunSQLDataReader(ByVal SQL As String) As SqlDataReader
ValidateSQLStatement(SQL)‘检查sql语句最小长度
Try
privateConnection = New SqlConnection(privateConnectionString)
privateCommand = New SqlCommand(SQL, privateConnection)
privateConnection.Open()
Return privateCommand.ExecuteReader(CommandBehavior.CloseConnection)
Catch ExceptionObject As Exception
LogException(ExceptionObject)
Throw New Exception(privateExceptionMessage, ExceptionObject)
Finally

End Try
End Function
#End Region

以上代码是数据层的一部分代码,其中RunSQLDataReader方法有问题吗?
...全文
83 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhandjq 2008-08-21
  • 打赏
  • 举报
回复
没看出来有问题,感觉没错!
沐NeMo 2008-08-21
  • 打赏
  • 举报
回复
DataReader只读,向前的。
而且你要返回reader时,不可以释放其他的资源的。
Connection关闭,释放了。DataReader就没数据了。好像是这样的。没有查具体情况。
----
也许可以clone 或copy一下里面的数据,再返回。
我遇到过这样问题。我就改为返回datatble了,或者dataset。
zsx123 2008-08-20
  • 打赏
  • 举报
回复
主要是资源释放的问题,比如Connection,SqlDataReader 的释放问题?谢谢

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧