CreateDataReader - Create a DataReader over any connection

' return a DataReader over a generic Connection'' CN is the OleDbConnect or SqlConnection object' SQL is the SQL Select statement to be executed'' if closed, the connection will be opened and then closed on exit' any exception is returned to the caller
Function CreateDataReader(ByVal cn As System.Data.IDbConnection, _
ByVal sql As String) As System.Data.IDataReader
Dim cmdBehavior As CommandBehavior = CommandBehavior.Default
' open the connection if necessary
If (cn.State And ConnectionState.Open) = 0 Then
' open the connection if closed
cn.Open()
' close it automatically when the DataReader is disposed
cmdBehavior = CommandBehavior.CloseConnection
End If
' prepare the SQL SELECT command
Dim cmd As System.Data.IDbCommand = cn.CreateCommand()
cmd.CommandText = sql
' create a DataReader - enforce the desired behavior
Dim dr As System.Data.IDataReader = cmd.ExecuteReader(cmdBehavior)
' dispose the Command object and return the result
cmd.Dispose()
Return dr
End Function