Пример #1
0
        public void Should_get_typed_values()
        {
            using (var dbfDataReader = new DbfDataReader(FixturePath))
            {
                var columns = dbfDataReader.GetColumnSchema();
                columns.Count.ShouldBe(31);

                for (var i = 0; i < dbfDataReader.FieldCount; i++)
                {
                    if (dbfDataReader.IsDBNull(i))
                    {
                        var value = dbfDataReader.GetValue(i);
                        value.ShouldBeNull();
                        continue;
                    }

                    var fieldType = dbfDataReader.GetFieldType(i);
                    var typeCode  = Type.GetTypeCode(fieldType);
                    switch (typeCode)
                    {
                    case TypeCode.Boolean:
                        dbfDataReader.GetBoolean(i);
                        break;

                    case TypeCode.Int32:
                        dbfDataReader.GetInt32(i);
                        break;

                    case TypeCode.DateTime:
                        dbfDataReader.GetDateTime(i);
                        break;

                    case TypeCode.Single:
                        dbfDataReader.GetFloat(i);
                        break;

                    case TypeCode.Double:
                        dbfDataReader.GetDouble(i);
                        break;

                    case TypeCode.Decimal:
                        dbfDataReader.GetDecimal(i);
                        break;

                    case TypeCode.String:
                        dbfDataReader.GetString(i);
                        break;

                    default:
                        // no cheating
                        throw new NotSupportedException($"Unsupported field type: {fieldType} for column at index: {i}");
                    }
                }
            }
        }
Пример #2
0
        public static void ReadField(this DbfDataReader dbfDataReader, int ordinal)
        {
            var fieldType = dbfDataReader.GetFieldType(ordinal);
            var typeCode  = Type.GetTypeCode(fieldType);

            switch (typeCode)
            {
            case TypeCode.Boolean:
                dbfDataReader.GetBoolean(ordinal);
                break;

            case TypeCode.Int32:
                dbfDataReader.GetInt32(ordinal);
                break;

            case TypeCode.DateTime:
                dbfDataReader.GetDateTime(ordinal);
                break;

            case TypeCode.Single:
                dbfDataReader.GetFloat(ordinal);
                break;

            case TypeCode.Double:
                dbfDataReader.GetDouble(ordinal);
                break;

            case TypeCode.Decimal:
                dbfDataReader.GetDecimal(ordinal);
                break;

            case TypeCode.String:
                dbfDataReader.GetString(ordinal);
                break;

            case TypeCode.Object:
                dbfDataReader.GetValue(ordinal);
                break;

            default:
                Console.WriteLine($"Unrecognised type: fieldType: {fieldType}, typeCode: {typeCode} ");
                // no cheating
                throw new NotSupportedException();
            }
        }