public void OpenDataReader(String query, out IDataReader readerRef, CommandBehavior behaviour, Boolean requiredTransaction, String procedureName, IDbDataParameter[] oleDbParameterArray, String conName) { IDbCommand mainCommand; try { if ((procedureName.Trim()).Length.IsZero()) { if ((query.Trim()).Length.IsZero()) throw new Exception("Query is blank"); } switch (ProviderType) { case Util.ConnectionLibrary.SQlClient: mainCommand = new SqlCommand(); break; case Util.ConnectionLibrary.Oledb: mainCommand = new OleDbCommand(); break; case Util.ConnectionLibrary.ODBC: mainCommand = new OdbcCommand(); break; default: mainCommand = null; break; } if (mainCommand.IsNull()) { readerRef = null; return; } if (requiredTransaction.IsFalse()) { if (conName.Length > 0) { OpenConnection(conName); } else { OpenConnection(String.Empty); } } else { mainCommand.Transaction = transaction; } if ((procedureName.Trim()).Length.IsZero()) { mainCommand.CommandType = CommandType.Text; mainCommand.CommandText = query; } else if (oleDbParameterArray.IsNull() && (procedureName.Trim()).Length > 0) { mainCommand.CommandType = CommandType.StoredProcedure; mainCommand.CommandText = procedureName; } else if (oleDbParameterArray.IsNotNull() && (procedureName.Trim()).Length > 0) { mainCommand.CommandType = CommandType.StoredProcedure; mainCommand.CommandText = procedureName; for (Int32 i = 0; i < oleDbParameterArray.Length; i++) { if (oleDbParameterArray[i].IsNotNull()) { mainCommand.Parameters.Add(oleDbParameterArray[i]); } } } else { throw new Exception("Could Not Create the Command Object"); } mainCommand.CommandTimeout = CommandTimeOutValue; mainCommand.Connection = disconnection; readerRef = mainCommand.ExecuteReader(behaviour); } catch (Exception ex) { CloseConnection(); throw (ex); } }