コード例 #1
0
ファイル: Db.cs プロジェクト: intxx0/csorm
        public dynamic fetchAll(DbMapper mapper)
        {
            int len;

            dynamic[]       rowset = new dynamic[0];
            OleDbDataReader dr;

            if (Db._fetchMode == Db.FETCH_READER)
            {
                return(this.execute(this._buildSelect(mapper)));
            }
            else
            {
                dr = this.execute(this._buildSelect(mapper));

                if (_debug == false)
                {
                    while (dr.Read())
                    {
                        string[,] values = new string[dr.VisibleFieldCount, 2];

                        for (int i = 0; i < dr.VisibleFieldCount; i++)
                        {
                            values[i, 0] = dr.GetName(i);
                            values[i, 1] = dr[dr.GetName(i)].ToString();
                        }

                        if (Db._fetchMode == Db.FETCH_OBJECT)
                        {
                            DbMapperRecord record = null;

                            if (mapper.Record != null)
                            {
                                record = (DbMapperRecord)System.Activator.CreateInstance(Type.GetType(mapper.Record));
                            }
                            else
                            {
                                record = new DbMapperRecord(mapper);
                            }

                            record.Hydrate(values);

                            len = rowset.Length;
                            Array.Resize <dynamic>(ref rowset, (len + 1));
                            rowset[len] = record;
                        }
                        else
                        {
                            len = rowset.Length;
                            Array.Resize <dynamic>(ref rowset, (len + 1));
                            rowset[len] = values;
                        }
                    }

                    return(rowset);
                }

                return(dr);
            }
        }
コード例 #2
0
ファイル: Db.cs プロジェクト: intxx0/csorm
        public dynamic fetchRow(DbMapper mapper)
        {
            OleDbDataReader dr;

            dr = this.execute(this._buildSelect(mapper));

            if (_debug == false)
            {
                dr.Read();

                if (Db._fetchMode == Db.FETCH_OBJECT ||
                    Db._fetchMode == Db.FETCH_ARRAY)
                {
                    string[,] values = new string[dr.VisibleFieldCount, 2];

                    for (int i = 0; i < dr.VisibleFieldCount; i++)
                    {
                        values[i, 0] = dr.GetName(i);
                        values[i, 1] = dr[dr.GetName(i)].ToString();
                    }

                    if (Db._fetchMode == Db.FETCH_OBJECT)
                    {
                        DbMapperRecord record = null;

                        if (mapper.Record != null)
                        {
                            record = (DbMapperRecord)System.Activator.CreateInstance(Type.GetType(mapper.Record));
                        }
                        else
                        {
                            record = new DbMapperRecord(mapper);
                        }

                        record.Hydrate(values);
                        return(record);
                    }
                    else
                    {
                        return(values);
                    }
                }
            }

            return(dr);
        }