' 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 callerFunction 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 drEnd Function