Example #1
0
        private Encoders.Encoder GetEncoder(DbfFieldType type, Encoding encoding)
        {
            switch (type)
            {
            case DbfFieldType.Character: return(new Encoders.CharacterEncoder(encoding));

            case DbfFieldType.Currency: return(new Encoders.CurrencyEncoder(encoding));

            case DbfFieldType.Date: return(new Encoders.DateEncoder(encoding));

            case DbfFieldType.DateTime: return(new Encoders.DateTimeEncoder(encoding));

            case DbfFieldType.Integer: return(new Encoders.IntegerEncoder(encoding));

            case DbfFieldType.Float: return(new Encoders.FloatEncoder(encoding));

            case DbfFieldType.Double: return(new Encoders.DoubleEncoder(encoding));

            case DbfFieldType.Numeric: return(new Encoders.NumericEncoder(encoding));

            case DbfFieldType.Logical: return(new Encoders.LogicalEncoder(encoding));

            case DbfFieldType.NullFlags: return(new Encoders.NullFlagsEncoder(encoding));

            case DbfFieldType.Memo: return(new Encoders.MemoEncoder(encoding));

            default:
                throw new ArgumentException($"No encoder found for dBASE type '{type}'.");
            }
        }
Example #2
0
 internal DbfField(string name, DbfFieldType type, int length, Encoding encoding)
 {
     Name    = name;
     Type    = type;
     Length  = (byte)length;
     Encoder = GetEncoder(Type, encoding);
 }
Example #3
0
 public DbfField(string name, DbfFieldType type, byte length)
 {
     this.Name       = name;
     this.Type       = type;
     this.Length     = length;
     this.Precision  = 0;
     this.WorkAreaID = 0;
     this.Flags      = 0;
 }
Example #4
0
        public DbfField(string name, DbfFieldType type, int length = 0, int precision = 0)
        {
            Name      = name;
            Type      = type;
            Length    = length;
            Precision = precision;

            switch (type)
            {
            case DbfFieldType.Float:
                if (length == 0)
                {
                    Length = 10;
                }
                break;
            }
        }
Example #5
0
        public static IEncoder GetEncoder(DbfFieldType type)
        {
            switch (type)
            {
            case DbfFieldType.Character:
                return(CharacterEncoder.Instance);

            case DbfFieldType.Currency:
                return(CurrencyEncoder.Instance);

            case DbfFieldType.Date:
                return(DateEncoder.Instance);

            case DbfFieldType.DateTime:
                return(DateTimeEncoder.Instance);

            case DbfFieldType.Float:
                return(FloatEncoder.Instance);

            case DbfFieldType.Integer:
                return(IntegerEncoder.Instance);

            case DbfFieldType.Logical:
                return(LogicalEncoder.Instance);

            case DbfFieldType.Memo:
                return(MemoEncoder.Instance);

            case DbfFieldType.NullFlags:
                return(NullFlagsEncoder.Instance);

            case DbfFieldType.Numeric:
                return(NumericEncoder.Instance);

            default:
                throw new ArgumentException("No encoder found for dBASE type " + type);
            }
        }
Example #6
0
        public DbfField AddNewField(string name, DbfFieldType type, int length)
        {
            if (type == DbfFieldType.Memo)
            {
                if (Header.Version == DbfVersion.dBase4SQLSystemNoMemo ||
                    Header.Version == DbfVersion.dBase4SQLTableNoMemo ||
                    Header.Version == DbfVersion.FoxBaseDBase3NoMemo)
                {
                    throw new InvalidOperationException("Memo fields are not supported for this database version.");
                }

                if (Memo == null)
                {
                    Memo = CreateMemo();
                }
            }

            var field = new DbfField(name, type, length, _encoding);

            Fields.Add(field);

            return(field);
        }