Ejemplo n.º 1
0
        public LoadValuesResult LoadValues(string relex, bool totalcount)
        {
            var res         = new LoadValuesResult();
            var relexParser = new RelExParser();
            var q           = relexParser.Parse(relex);

            var fldMapping = new FieldMapping(q.Fields);

            q.Fields = fldMapping.GetCompactFields();

            if (totalcount)
            {
                res.TotalCount = StorageDalc.RecordsCount(q);
            }

            var cols = new List <string>();
            var data = new List <object[]>();

            StorageDalc.ExecuteReader(q, (reader) => {
                for (int i = 0; i < q.StartRecord; i++)
                {
                    reader.Read();                     // skip first N records
                }
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    var fName = reader.GetName(i);
                    cols.Add(fldMapping.GetOriginalFieldName(fName));
                }

                while (reader.Read() && data.Count < q.RecordCount)
                {
                    var values = new object[reader.FieldCount];
                    reader.GetValues(values);
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        if (DBNull.Value.Equals(values[i]))
                        {
                            values[i] = null;
                        }
                    }
                    data.Add(values);
                }
            });
            res.Columns = cols.ToArray();
            res.Data    = data;
            return(res);
        }
Ejemplo n.º 2
0
        public LoadRowsResult LoadRows(string relex, bool totalcount)
        {
            var res         = new LoadRowsResult();
            var relexParser = new RelExParser();
            var q           = relexParser.Parse(relex);

            var fldMapping = new FieldMapping(q.Fields);

            q.Fields = fldMapping.GetCompactFields();

            if (totalcount)
            {
                res.TotalCount = StorageDalc.RecordsCount(q);
            }

            var data = new RowList();

            StorageDalc.ExecuteReader(q, (reader) => {
                for (int i = 0; i < q.StartRecord; i++)
                {
                    reader.Read();                     // skip first N records
                }
                var cols = new List <string>();
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    var fName = reader.GetName(i);
                    cols.Add(fldMapping.GetOriginalFieldName(fName));
                }

                while (reader.Read() && data.Count < q.RecordCount)
                {
                    var values = new object[reader.FieldCount];
                    reader.GetValues(values);
                    var row = new Dictionary <string, object>(values.Length);
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        row[cols[i]] = DBNull.Value.Equals(values[i]) ? null : values[i];
                    }
                    data.Add(new DictionaryItem(row));
                }
            });

            res.Data = data;
            return(res);
        }