我有一系列用于数据访问的辅助类,我尝试确保它们在所有主要提供程序(如SQL Server,Oracle和现在的SQL CE)中尽可能保持一致。
然而,有一件事我注意到,如果我在ExecuteReader
上拨打SqlCeCommand
而不是SqlCommand
,我就不会回复DataReader
我可以使用HasRows()
查看文档时,为了得到DataReader
我可以用这种方式进行测试,我应该使用ExecuteResultSet
ResultSetOptions
参数设置为ResultSetOptions.Scrollable
}。这里的问题是没有重载需要CommandBehaviour
作为参数,这是我通常做的,以确保当我处理我的DAL类中的DataReader
连接时,连接将被关闭。
这里推荐的最佳做法是什么?我是否应该将ExecuteResultSet
构造中的using
包裹起来,以便在使用它完成DAL代码时自动处理它?是否有一些我缺少的替代方案?
答案 0 :(得分:0)
你应该只使用rdr.Read(),将对所有提供者起作用。
答案 1 :(得分:0)
您可以使用Read()
方法查找行或列中的数据
Dim dd As SqlCeDataReader = sqlCommand.ExecuteReader
Dim HasRows As Boolean = dd.Read()
If HasRows Then
' Datareader has rows
Else
' No data in Row or Column
End If