public static PepTable MakeTableFromReader(SqlDataReader reader) { var pepTable = new PepTable(); List <string> errors = new List <string>(); try { var cols = new List <string>(); for (var i = 0; i < reader.FieldCount; i++) { cols.Add(reader.GetName(i)); } pepTable.Columns = cols; var rows = new List <List <object> >(); while (reader.Read()) { rows.Add(SerializeRow(cols, reader)); } pepTable.Rows = rows; } catch (Exception ex) { pepTable.Errors = errors; } return(pepTable); }
public async override Task <PepTable> GetDataAsync(string connectionStringName, string procedureName, JObject parameters) { DbConnection connection = null; SqlDataReader readerResponse = null; PepTable table = new PepTable(); try { connection = this.GetConnection(connectionStringName); var dbParams = new DBParameter { DBConnection = connection, ProcedureName = procedureName, SqlParameters = this.iParameterExtractor.ExtractSQLParameters(parameters) }; readerResponse = await this.iDatabaseExecutor.ExecuteAsync(dbParams).ConfigureAwait(false); table = PepMaker.MakeTableFromReader(readerResponse); } catch (Exception ex) { table.Errors = new List <string> { ex.ToString() }; iLogger.Failure(ex, ""); } finally { try { if (!readerResponse.IsClosed) { readerResponse.Close(); } } catch (Exception) { } try { if (connection.State != ConnectionState.Closed) { connection.Close(); } } catch (Exception) { } } return(table); }